モデル ユーザーを考えてみましょう。
User(id: integer, name: string, email: string, status: string)
アプリケーションを作成したとき、ステータスはデータベースのフィールドでした。ただし、新しい要件は変更を意味するため、場合によってはステータスが動的に計算されます。たとえば、日曜日に姓が A で始まる場合、そのステータスは「not ok」です。
この機能を User モデルに次のようにカプセル化したいと思います。
Class User < ActiveRecord::Base
def status
if is_sunday && last_name.starts_with('A')
return 'not ok'
else
return status
end
end
end
これを行う最善の方法は何ですか?上記のコードが機能する場合、データベース内のフィールドをメソッドでオーバーライドするのは悪い習慣のようです。
get_status
または、上記のコードを使用するメソッドを作成することもできます。ただし、この場合status
、アプリケーション全体ですべての参照を変更する必要があります。それはよく聞こえません。