Плагин Rails 3 scope_out не работает - PullRequest
1 голос
/ 04 декабря 2010

Привет, я попытался установить плагин scope_out через "Установка плагина rails http://scope -out-rails.googlecode.com / svn / trunk / "

и добавилscope_out для моей модели:

class MessageCopy < ActiveRecord::Base
  belongs_to :message
  belongs_to :recipient, :class_name => "User"
  belongs_to :folder
  delegate   :author, :created_at, :subject, :body, :recipients, :to => :message
  scope_out  :deleted
  scope_out  :not_deleted, :conditions => ["deleted IS NULL OR deleted = ?", false]
end

но я всегда получаю ошибку: неопределенный метод `scope_out '

1 Ответ

3 голосов
/ 04 декабря 2010

Плагин scope_out несовместим с Rails3.

Судя по пояснениям к плагину, он вполне может устареть.Вместо этого вы можете написать эти области как:

class MessageCopy < ActiveRecord::Base
  ...
  scope :deleted, where(:deleted => true)
  scope :not_deleted, where("deleted IS NULL OR deleted = ?", false)
end

Более подробную информацию о новом синтаксисе ActiveRelation здесь .

Вы также можете написать это, используя необработанные объекты ARel:

where( arel_table[:deleted].eq(nil).or( arel_table[:deleted].eq(false) ) )

Я использовал новый драгоценный камень под названием MetaWhere для увеличения стандартного ARel.Это позволит вам написать not_deleted как:

scope :not_deleted, where({ :deleted => nil } | { :deleted => false })

Если вы используете Rails 3.1, попробуйте преемник MetaWhere под названием Squeel

scope :not_deleted, where{ ( deleted == nil ) | ( deleted == false ) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...