验证关联的属性

时间:2013-04-19 14:11:09

标签: ruby-on-rails

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属性?我提出了这个解决方案,但我想知道是否有更好的方法来做到这一点。在验证回调上添加错误正确的方法来执行此操作?或者我应该创建一个虚拟属性并使用proc?

验证credits

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

1 个答案:

答案 0 :(得分:1)

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

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

 def validate
 end

而不是before_validation