タイムゾーンのないタイムスタンプとしてデータ型を持つbill_dateという名前の列が1つあります。
次に、bill_dateを使用してレコードを検索します。ユーザーは2012-12-09のように日付を入力します。
Bill.find_by_bill_date(2012-12-09)を使用したい。
上記のものは結果を与えません。型キャストをしなければならないからです。いくつか提案をお願いします。where句や条件を使いたくありません。find_byのみを使用したい。
タイムゾーンのないタイムスタンプとしてデータ型を持つbill_dateという名前の列が1つあります。
次に、bill_dateを使用してレコードを検索します。ユーザーは2012-12-09のように日付を入力します。
Bill.find_by_bill_date(2012-12-09)を使用したい。
上記のものは結果を与えません。型キャストをしなければならないからです。いくつか提案をお願いします。where句や条件を使いたくありません。find_byのみを使用したい。
次のように Bill クラスにメソッドを追加するだけです。
def self.find_by_bill_date(date)
where("DATE(bill_date) = DATE(?)", date).first
end
where句を使いたくないと言ったのは知っていますが、とにかく、動的ファインダーメソッド(find_by_*)はまったく同じことを行います。
Date.today をタイムスタンプ フィールドに入れることはお勧めできません。そのまま使いたい場合は、 Date.today の代わりに Time.now を入れるか、列を日付に変更してください。
編集: 型キャスト:
>> h.published_at_before_type_cast
=> "2012-11-15 19:11:15.517923"