rails的before_validation问题

时间:2011-02-04 15:04:07

标签: ruby-on-rails-3

问题是我正在使用

def before_validation
  self.author.strip!
  self.author_email.strip!
end

我收到一条错误消息:

弃用警告:不推荐使用Base#before_validation,请改用Base.before_validation:方法。

有人能指出我正确的方向吗?感谢

2 个答案:

答案 0 :(得分:9)

在您的班级模型的顶部某处放置清理方法的名称:

before_validation :remove_whitespace

...然后在模型类的下方放置一个具有相同名称的私有方法:

def remove_whitespace
  self.author.strip!
  self.author_email.strip!
end

或者,如果你想要一个单行,那么你也可以将lambda而不是方法名称传递给before_validation:

before_validation lambda {self.author.strip!; self.author_email.strip!}

答案 1 :(得分:1)

每个人 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

尝试这样的事情。你可以调用before_validation并传递一个块而不是覆盖它。

before_validation() do 
  self.author.strip!
  self.author_email.strip!
end