Rails with_options:if => custom_method(parameterOne,parameterTwo)

时间:2012-01-19 03:52:40

标签: ruby-on-rails ruby


我想知道当你使用带有'with_options'方法的:if选项时,是否可以将参数传递给方法。

例如,我可以这样打电话吗?

 
 with_options :if => :is_user_this_level?(threshold_level) do |some_object|
    some_object.validates_with ObjectValidator
 end

我想知道是否可以将变量'threshold_level'传递给:if选项方法。基本上我想这样做是因为我不想要这样的方法:is_user_level_two?,:is_user_level_three?等等等等。

此外,如果有一种RAILS方式,我正在咆哮错误的树,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:2)

ActiveRecord回调的通常:if选项可以将lambda作为其参数,因此可能会有效:

with_options :if => ->(o) { o.is_user_this_level? threshold_level } do |some_object|
    some_object.validates_with ObjectValidator
end