は、モデルのユーザーを考えてみましょう:Railsモデルでフィールドを「オーバーロードする」最適な方法は何ですか?
私はアプリケーションを構築し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
に変更する必要があります。それは良いとは思わない。
fwiw、私は解決策としてその方法で完全に問題ありません。私は 'get_status'を追加すると、ユーザーのステータスを取得する第2の方法を作成しているので、もっと混乱していると思います。 – thewillcole