ローカライズされた形式で日付を表示する必要がありました。すなわち2013年12月31日
したがって、config / initializers / datetime_formats.rbで、デフォルトの日付形式をその形式に設定しました。
Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"
ただし、一部の検索は日付形式に基づいているため、単体テストでテストが失敗しました。例えば
>> User.find_by_created_at("#{DateTime.now}")
User Load (2.7ms) SELECT `users`.* FROM `users`
WHERE `users`.`created_at` = '02/04/2013 14:43' LIMIT 1
もちろん、文字列の代わりにDateクラスまたはDateTimeクラスを使用するように、すべての日付または日時検索を使用するようにすべてのモデルを変更できます。しかし、表示のみの日付形式または表示のみの時間形式を適用できるかどうかに興味がありました。
表示のみの日付(または時刻)形式を適用する方法はありますか?
- - - 編集 - - -
例外処理のあるビュー用のカスタムメソッドl_or_noneがすでにあります。
def l_or_none(object)
l(object) rescue ''
end
ビュー全体でこのメソッドを繰り返したくないので、独自のメソッドを使用せずに、「Date#to_sがビューで呼び出された場合は、この方法でフォーマットする」方法を探します。
このようなコンセプトを持ってみませんか?
「このオブジェクトがビューで使用されている場合は、この方法でメソッドをオーバーライドしてください」