У меня есть метод, который принимает необязательные аргументы. И в методе я делаю запрос на необязательные аргументы, как это:Есть ли способ СУХОЙ для этого в Ruby on Rails
def filter_element(param1, *param2)
param2[0].empty? ? filtered_element = Model_class.where('city = ?', param1) : filtered_element = Model_class.where('city = ? and price <= ?', param1, param2[0].to_i)
end
Это пример с одним необязательных аргументов, передаваемых в метод.
Мой вопрос: если у меня есть несколько опциональных аргументов и вы хотите использовать его в аргументах запроса в зависимости от его присутствия, как я могу это сделать?
Я знаю, что могу использовать, если, elsif и т. Д. Но я хочу использовать СУХОЙ способ сделать это.
Я уверен, что есть способ, но не смог найти ничего связанного с ним.
Способ с один необязательный аргумент, как правило, выглядит следующим образом: определение функции filter_element (param1, param2 = ноль) '. Кроме того, локальные переменные 'filter_element' и' filter_advertiesments' никогда не используются. – Stefan
Я обновил код. Этот метод возвращает filter_element. Насколько я понимаю, это не очень хорошая практика, чтобы передать nil в запросе, поэтому нет значения nil в качестве значения по умолчанию. – tanvir2362
Вам не нужно присваивать возвращаемое значение переменной вообще, т. Е. Удалить как 'filter_element =', так и просто написать '...? Model_class.where (...): Model_class.where (...) ' – Stefan