0
class Photo < ActiveRecord::Base

  belongs_to :member

  before_validation :able_to_upload

  private

  def able_to_upload
    self.errors[:member] << 'can not upload photo.' if self.member.credits < 50
  end
end

属性を持つ Member モデルがありcreditsます。50 クレジット以上のメンバーは、写真をアップロードできる必要があります。creditsメンバーが写真をアップロードするときに属性を検証するにはどうすればよいですか? 私はこの解決策を思いつきましたが、これを行うより良い方法があるかどうか疑問に思っています。これを行う正しい方法で検証コールバックにエラーを追加しますか? または、仮想属性を作成creditsして proc で検証する必要がありますか?

編集:このソリューションは機能しますが、より一般的なソリューション用の「課金可能」モジュールを作成しました。

4

1 に答える 1

1

これは良い解決策です。

思い出さなかった理由により、使用する必要があります

 def validate
 end

それ以外のbefore_validation

于 2013-04-19T14:59:42.020 に答える