Rails with_options: if => custom_method (параметрOne, параметрTwo) - PullRequest
1 голос
/ 19 января 2012

Мне было интересно, можно ли передать параметр в методы, когда вы используете опцию: if с методом with_options.

Например, можно ли вызвать что-то подобное?

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

Мне интересно, можно ли передать переменную 'threshold_level' в метод опции: if.По сути, я хочу сделать это, потому что я не хочу иметь такие методы, как: is_user_level_two ?,: is_user_level_three?и так далее и тому подобное.

Также, если есть способ сделать это с помощью ЖЕЛЕЗНОДОРОЖНЫХ, и я лаю не на том дереве, пожалуйста, дайте мне знать.

Спасибо!

1 Ответ

2 голосов
/ 19 января 2012

Обычная опция :if для обратных вызовов ActiveRecord может принимать лямбду в качестве аргумента, поэтому, возможно, это будет работать:

with_options :if => ->(o) { o.is_user_this_level? threshold_level } do |some_object|
    some_object.validates_with ObjectValidator
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...