Rails 2-х корпусная сфера - PullRequest
1 голос
/ 12 сентября 2011

у меня есть сфера

scope :for_list, lambda { |brand_ids|
   where('brands.id IN (?)', brand_ids).includes(:models).where("models.popular = '1'").order('models.name')
}

Но иногда нет моделей.popular = 1

И в этом случае я хочу выбрать все из моделей, игнорируя popular параметр

Как написать эту область?

1 Ответ

1 голос
/ 14 сентября 2011

Поскольку это просто лямбда-функция, вы можете использовать там if/else, и она будет оценена во время вызова. Следовательно, вы можете написать область видимости так:

scope :for_list, lambda { |brand_ids|
    if self.popular > 1
           where('brands.id IN (?)', brand_ids).includes(:models).where("models.popular = '1'").order('models.name')
    else
           where('brands.id IN (?)', brand_ids).includes(:models).order('models.name')
    end
}

Это должно работать. Тем не менее, я бы предостерег от использования этого. Эта логика не входит в сферу. Вместо этого вы должны спросить вас о ваших представлениях, и контроллеры настроены и переработать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...