#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
Есть ли способ условно добавлять методы запроса к ActiveRecord::Relationship?
Например, я ищу пользователей, но при определенных условиях в поиск было включено только имя last_name. Можете ли вы добавлять запросы к объекту ActiveRecord::Relation?
i_want_to_search_for_last_names = true
pending_relation = User.where(:first_name => "John")
pending_relation << where(:last_name => "Doe") if i_want_to_search_for_last_names
@users = pending_relation.all
Ответ №1:
Ваш код почти правильный, за исключением некоторых моментов. Вот что вы можете сделать (не забывайте: вы имеете дело с ActiveRelation):
i_want_to_search_for_last_names = true
@users = User.where(:first_name => "John")
@users = @users.where(:last_name => "Doe") if i_want_to_search_for_last_names
Что касается меня — я использовал эту технику в своих проектах. Надеюсь, это вам поможет.
Комментарии:
1. Это работает! Это многострочный
User.where(:first_name => "John").where(:last_name => "Doe")
. Ваш подход должен был прийти мне в голову 🙂 Спасибо за мозговую встряску.