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

我有一个带有credits属性的成员模型。拥有 50 积分或更高积分的会员应该可以上传照片。credits会员上传照片时如何验证属性?我想出了这个解决方案,但我想知道是否有更好的方法来做到这一点。在验证回调上添加错误的正确方法是什么?或者我应该创建一个虚拟属性并credits使用 proc 进行验证?

编辑:虽然这个解决方案有效,但我创建了一个“收费”模块,用于更通用的解决方案,感觉恰到好处。

4

1 回答 1

1

这是一个很好的解决方案。

由于我没有提醒的原因,您应该使用

 def validate
 end

代替before_validation

于 2013-04-19T14:59:42.020 回答