Создание подмножества модели - PullRequest
1 голос
/ 31 августа 2010

У меня есть модель в Rails, представляющая магазины

class Store < ActiveRecord::Base

Логическое поле "черновик" в этой модели определяет, активна ли запись или это просто черновик.Я использую act_as_xapian для поиска в моем приложении, и он получает модель, где поиск должен быть выполнен.Эта часть работает.Тем не менее, я хочу запустить поиск только по активным элементам (draft == false)

Я не уверен, как можно ограничить поиск по activ_as_xapian, но я мог бы сделать то же самое, создавНовая модель, которая содержит только элементы из класса Store с draft == false.

Изначально я думал, что могу использовать метод с находкой

def self.active
  find :all, :conditions => {:draft => false}
end

, но Act_as_xapian действительно хочет модель

Есть предложения?

1 Ответ

3 голосов
/ 01 сентября 2010

Вы можете создать область для этого, чтобы упростить ее вызов:

named_scope :bloqueado,
  :conditions => { :bloqueado => true }

Это означает, что вы можете вызывать прицел в любое время, когда захотите его найти:

Store.bloqueado.all

С точки зрения стиля, я бы сказал, что ваша логика перевернута. Обычно лучше установить логические поля для представления положительного утверждения, например «опубликовано», вместо того, чтобы что-то сродни истинному значению «не опубликовано» или черновик. Это дает вам логическую пару «опубликовано» / «не опубликовано» вместо «черновик и не опубликовано» / «не черновик и не опубликовано».

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