Rails3& ActiveRecord :: Relation - Arel和OR

时间:2011-03-11 10:39:27

标签: ruby-on-rails-3 arel active-relation

我在名为Events的模型中定义了一些范围。现在我需要使用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

使用Events.for_company(Company.find(1)).arel.or(Events.issues)我得

NoMethodError:未定义的方法`或'#Arel :: SelectManager

我希望获取所有问题或用户来自确定公司的事件。

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

感谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:-3)

Event.for_company(Company.find(1)).issues