Rails3 & ActiveRecord::Relation - Arel und ODER

Habe ich einige Bereiche definiert, die in ein Modell namens Veranstaltungen. Jetzt muss ich Ihnen beizutreten, mit ODER Betreiber. Ich bin mit Rails3 und ich bin ein wenig verwirrt mit ActiveRelation & Arel und wie und wie ich diese

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

Wie kann ich Veranstaltungen

for_company(x) OR issues

Wenn ich versuche Events.for_company(X).or(issues) bekomme ich eine Fehlermeldung

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

NoMethodError: undefined method `oder' für #ActiveRecord::Relation

mit Events.for_company(Company.find(1)).arel.or(Events.issues) bekomme ich

NoMethodError: undefined method `oder' für #Arel::SelectManager

Ich möchten alle Ereignisse, Probleme oder wo Benutzer aus einem bestimmten Unternehmen.

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

Dank.

  • Könnten Sie etwas konkreter über das, was Sie möchten, zu bekommen, als ein Ergebnis. Einer Ihrer Bereiche ist dabei eine Verknüpfung, so dass Sie können nicht nur hinzufügen, die auf einer anderen Abfrage, die nicht verbindet, ohne dabei ein join auf Sie als gut oder unterlassen verknüpften Spalten.
  • Hoppla.. jetzt korrekt ist.
  • Zunächst einmal werden Sie im zweiten Bereich, den Sie joins und includes für die Benutzer. Es ist nicht korrekt, lassen Sie einfach schließt oder schließt (ich glaube beinhaltet, funktioniert nur mit ODER). Es gibt keine einfache Möglichkeit zu machen, ODER für diejenigen, die zwei quiries, aber Sie können es tun mit arel_table.
Schreibe einen Kommentar