私はRailsの初心者です。私は範囲に問題があります。複数の範囲のレール3.0
私は2つのスコープと私のクラスがあります。
class Event < ActiveRecord::Base
belongs_to :continent
belongs_to :event_type
scope :continent, lambda { |continent|
return if continent.blank?
composed_scope = self.scoped
composed_scope = composed_scope.where('continent_id IN (?)', continent).all
return composed_scope
}
scope :event_type, lambda { |eventType|
return if eventType.blank?
composed_scope = self.scoped
composed_scope = composed_scope.where('event_type_id IN (?)', eventType).all
return composed_scope
}
エンド
をそして、私のコントローラでは、私は同時に、この2つのスコープを使用します。私がやった:
undefined method `event_type' for #<Array:0x7f11248cca80>
最初の範囲には、配列を返すためです:
def filter
@event = Event.scoped
@event = @event.continent(params[:continents]) unless params[:continents].blank?
@event = @event.event_type(params[:event_type]) unless params[:event_type].blank?
respond_with(@event)
end
しかし、私は動作しません、私はこのエラーを持っています。
どうすれば動作させることができますか?
ありがとうございました!
それはアレイにチェーン可能ActiveRelationを変換し、SQLクエリをトリガすることによって:あなたのスコープで「.ALL」を追加してはならない
どういたしましてはるかに短いこの
または、より多くのRailsの3途中のようなもの、
になる可能性があります。スコープでスコープが必要なのはなぜですか? – apneadiving