我是ruby和rails的新手,遇到了一个相当奇怪的错误:
class Person < ActiveRecord::Base
validates_presence_of :description, :if => require_description_presence?
def require_description_presence?
self.can_send_email
end
end
加注
NoMethodError in PeopleController#index
undefined method `require_description_presence?' for #<Class:0x4c4fadc>
答案 0 :(得分:8)
您应该将验证方法作为符号传递:
validates_presence_of :description, :if => :require_description_presence?
答案 1 :(得分:0)
你可以让它更短更甜。 :if
子句将轻松获取属性。因此,如果can_send_email是Person的布尔属性,那么这将起作用:
class Person < ActiveRecord::Base
validates_presence_of :description, :if => :can_send_email?
end
不需要创建另一种方法来检查此属性。如果您在can_send_email
的末尾注意到额外的问号,那是因为Rails允许您使用布尔属性执行此操作。我喜欢它,因为它使代码的目的更加清晰。