在子模型中获取父值

时间:2011-07-12 22:08:51

标签: ruby-on-rails model-associations

我有一个名为RsvpRegistrations的模型

belongs_to :rsvp

我需要在验证中使用父'rsvp'对象的值,例如

validates_presence_of :phone if self.rsvp.phone 

(Rsvp.phone是布尔值)

但这不起作用。我得到的错误是未定义的方法`rsvp'。如何访问父对象及其值?

一旦我开始工作,我就会运行其他类似的验证,所以我认为我需要抓住父级'rsvp'一次,然后在我的其他验证中引用它。

提前致谢。

2 个答案:

答案 0 :(得分:2)

validates_presence_of :phone, :if => Proc.new { |obj| obj.rsvp.phone? }

更多选项here

答案 1 :(得分:0)

如果您有多个所有引用RSVP的验证,则创建自定义验证方法可能更有效:

# app/models/rsvp_registration.rb
def RsvpRegistration
  def validate
    rsvp = self.rsvp
    errors.add(:rsvp, 'Phone is missing') unless rsvp.phone?
    errors.add(:rsvp, 'Other messages') if condition
  end
end