私のアプリでは、さまざまなものを検証するさまざまなサインインエントリーポイントがあります。データベースフィールドではない一時変数を設定する方法を教えてください。
メインサインアップでは、電子メールとパスワードのフィールドを除いて、何も必要ありません。代替のサインアップフィールドでは、さらに多くのことが必要です。だから私は
validate_presence_of :blah, :lah, :foo, :bah, :if => :flag_detected
def flag_detected
!self.flag.nil?
end
を持っているユーザーモデルでは、私はコントローラを介してそのフラグを設定したいです。ただし、そのフラグはデータベースフィールドではありません。私はこれがRailsで達成可能か、それとも私がこれについて考えている方法に何か間違っているのか疑問に思っていますか?もしそうなら、これを達成する最良の方法は何ですか?ありがとう。
"インスタンス変数"(アクセサーを介して公開されている - たとえば、必要ならば 'attr')の代わりに、このメソッドを呼び出してください。それは、モデルが*持続*モデルの一部ではないため、モデルでそうすることが「良い習慣」であれば議論の対象となります。しかし、コントローラでは、なぜですか? –
私は、コントローラから呼び出されたそのセーブのための一時変数である必要があります。コントローラーで@ user.flag = trueを設定すると、モデルで実際には表示されません。 – gtr32x
だから私はそれにattr_accessorを定義する必要がありますか?私はすでにattr_protectedを持っていれば、そのあと何とかそこにいますか? – gtr32x