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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ruby on Rails 3 howto machen 'ODER' Zustand
Rails3: kombinieren Sie Rahmen mit ODER
AND
Betrieb