2

イベントと呼ばれるモデルで定義されたスコープがいくつかあります。ここで、OR 演算子を使用してそれらを結合する必要があります。私は Rails3 を使用していますが、ActiveRelation と Arel、およびこれをどのように使用するべきかについて少し混乱しています。

scope :issues,   where(:subject_type =>  "Issue")
scope :for_company, lambda {|company| joins(:user)
                                      .where(:users => { :company_id => company.id })
                                      .includes(:user)}

イベントを取得する方法

for_company(x) OR issues

しようEvents.for_company(X).or(issues)とすると、エラーが発生します

Events.for_company(Company.find(1)).or(Events.issues)

NoMethodError: #ActiveRecord::Relation の未定義のメソッド「or」

を使っEvents.for_company(Company.find(1)).arel.or(Events.issues)

NoMethodError: #Arel::SelectManager の未定義のメソッド「or」

問題である、またはユーザーが決定された会社の場所であるすべてのイベントを取得したい。

select * from events 
         join users  
           on events.user_id = users.id 
        where users.company_id = 1 
           or events.subject_type = "Issues"

ありがとう。

4

2 に答える 2

-3
Event.for_company(Company.find(1)).issues
于 2012-01-12T15:27:33.450 に答える