をModel.find_by_queryを使用している間、 私はテーブルが異なる数の列を持っているので、私は仮想列を使用していますModel.find_by_query違いRailsの
を使用してユニオンクエリを行っております。私はMySQLでクエリ、 を実行しているが、Model.find_by_sqlと同じクエリを実行し、適切な出力を取得しています
"SELECT id, 'N/a' AS start_time, 'N/a' AS end_time, 'N/a' AS
STATUS , project_id, spent_on AS DATE, user_id, hours AS spent_time, comments AS
COMMENT , activity_id
FROM table1
WHERE spent_on > DATE_ADD(CURDATE() , INTERVAL -30
DAY)
AND user_id =80
UNION (
SELECT id, start_time, end_time,
STATUS , project_id, DATE, user_id, spent_time,
COMMENT , activity_id
FROM table2
WHERE user_id =80
AND DATE > DATE_ADD(CURDATE() , INTERVAL -30 DAY)
)"
よう
私のクエリは私にこれは出力iが
異なる出力を与えるに見えますmysqlの
にModel.find_byながら、クエリを実行している取得しています_sql()を返すだけの数の列、
<Task id: 6153, start_time: "2000-01-01 00:00:00", end_time: "2000-01-01 00:00:00", project_id: 6, spent_time: 10.0, user_id: 80, activity_id: 9>
はまた、値の不一致もありますことに注意してください。 'N/a'の代わりに、「2000-01-01 00:00:00」が時間フィールドに表示されています。
フィールドタイプが時刻なので、「N/A」は「2000-01-01 00:00:00」に変換されていることがわかりました。そこで、Railsはそれをある時間値に変換します。
これを無効にすることはできますか?
希望の出力を得るにはどうすればよいですか?そのような生のクエリを実行するための他の方法?
コメントしてください。
Thnx。
現在作業しているレールのバージョンは? –
そのレール2.3.14 –
Model.find_by_sql()を実行しているときにModelと一致しない列が無視されていることがわかりました。 –