Отношения ActiveRecord: добавление методов запроса

#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") . Ваш подход должен был прийти мне в голову 🙂 Спасибо за мозговую встряску.