Условия по умолчанию для моделей Rails - PullRequest
2 голосов
/ 31 августа 2010

У меня есть модель, у которой есть поле с именем deleted, которое используется для пометки этих удаленных элементов.

Поэтому обычно я просто хотел бы запросить тех, у кого есть deleted = false элементы, а в некоторых особых случаях перечислить эти удаленные элементы для восстановления.

Возможно ли это сделать? Теперь я могу использовать именованную область видимости, имеющую :conditions => {:deleted => false}

Есть ли лучший способ сделать это так, чтобы, когда я делаю Item.other_named_scope, я мог найти все эти не удаленные элементы?

1 Ответ

3 голосов
/ 31 августа 2010

Вы можете использовать default_scope для этого.

class Post
  default_scope :conditions => {:deleted => false}
end

Теперь все запросы к модели Post будут выполняться на ACTIVE сообщениях.Если вы хотите изменить это поведение, используйте with_exclusive_scope:

Post.with_exclusive_scope{ find_all_by_deleted(true) } #returns deleted records

Ссылка:

Ссылка 1

Caveat

Область default_scope влияет на каждый вызов поиска.Следует использовать с осторожностью и с полным осознанием нежелательных побочных эффектов.

...