让新手无法解决这个问题。我有没有地址的商店(只有一个website
),所以当播种实际上并不创建它们时只有{{1}的种子(Google-Maps-for-Rails) }。
Store.rb
address
我仍然想在这里使用所有内容但是传递此块的正确方法是什么?
谢谢。
答案 0 :(得分:2)
你走在正确的轨道上。您可以通过将方法传递到if
或unless
作为验证选项来绕过验证。在上面的代码中,您将它作为选项传递给在线验证器而不是验证本身。将除非移出散列并将其传递给方法的名称或Proc
- 实际上返回true或false的任何内容。这是一个例子:
validates :address,
:presence => { :message => "You must enter an address, website, or both." },
:unless => Proc.new { |store| store.address.nil? && store.website.present? }
除非商店既没有地址又有网站,否则每次都会运行验证。如果您需要更复杂的逻辑,我建议将其从Proc
移到方法中。