将属性传递给ActiveRecord before_validation

时间:2014-07-10 20:24:27

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

ActiveRecord的validates_each方法支持多个属性:

validates_each :foo, :bar, :baz do |record, attr, value|

    # logic here

end

有没有办法用ActiveRecord回调来做到这一点?

before_validation [:foo, :bar, :baz] :do_something

...

protected

  def do_something(*args)

    args.each do |a|

      # logic here

    end

  end

...

**编辑**

:foo:bar:baz是网址。我希望“规范化”它们(如果缺少,则将“http://”添加到开头),然后再应用验证。

2 个答案:

答案 0 :(得分:0)

我不相信它接受多个参数,但你可以有多个验证调用相同的方法。

before_validation :foo, :do_something
before_validation :bar, :do_something
before_validation :baz, :do_something

答案 1 :(得分:0)

before_validation :do_something

protected
  def do_something
    #do something here
  end
end

This documentation非常清楚地说明了这一点。