2

私は2つのレールモデルを持っていMyParentますMyChild.

.select()データベースの多数の行を効率的に追加するために、レールメソッドを使用してクエリを作成しようとしています。

2 つのテーブルから多数の列を取得したいのですが、元のモデルにない datetime (または timestamp) 型の列を参照すると、文字列として返されます。

例えば:

irb(main)> MyChild.select(['created_at as child_date', 'created_at']).first.child_date.class
=> String #Bad!!!
irb(main)> MyChild.select(['created_at as child_date', 'created_at']).first.created_at.class
=> ActiveSupport::TimeWithZone  #YAY!!!!

を使用して MyParent テーブルから日時を取得しようとしたときに、この問題に最初に遭遇しましたjoins()

child_dateActiveSupport::TimeWithZone オブジェクトとして必要なことをレールに伝えるにはどうすればよいですか?

Rails 3.2 の最新バージョンを使用しています。

4

1 に答える 1

1

私が思いついた唯一の解決策は、結果の日付を TimeWithZone オブジェクトにキャストすることでした

Time.zone.parse(MyChild.select(['created_at as child_date']).first.child_date)
# returns a ActiveSupport::TimeWithZone object
于 2013-05-09T16:07:50.360 に答える