-1
我有一個項目模型W /該協會介紹團隊成員已接受(狀態)如何在arel中相交兩個關聯?
Class Project < ActiveRecord::Base
has_many :participants, :through => :team_members, :source => :user, :conditions => ['team_members.status = ?', TeamMember::STATUS[:accept]]
我有了與會者還
Class Activity < ActiveRecord::Base
belongs_to :project
has_many :participants, :through => :collaborations, :source => :user
活動參與者可能包括團隊的活動模型尚未接受的成員。所以,我想要這兩個關聯的交集。我的目標是做1查詢,而不是重複關聯的sql,並且採用單個列。我發現Intersect在這裏描述爲http://www.rubydoc.info/github/rails/arel/Arel/SelectManager#intersect-instance_method,並試圖從https://github.com/rails/arel/commit/74caeaad157e79853b9c6804f561d3c70eea2346推斷其使用。但我沒有運氣。
我已經走到這一步,是最好的:
a = Activity.find(1)
team = a.project.participants.select('user_id').to_sql
peeps = a.participants.where("user_id in (#{team})")
peeps.pluck('thecolumn')
但這一個查詢(好),不重複協會(良好),不加載的邏輯全部AR對象,因爲我只是在一個值(好)之後。不過,我希望能夠:
a = Activity.find(1)
peeps = a.project.particpants.intersect a.project.participants
其作品,但將返回阿雷爾::節點::相交...不知道如何抓住從結果。
任何這運氣? – 2014-06-20 05:34:54
不,仍然使用.to_sql:/ – 2014-06-20 14:37:44
看到我的問題,以及我如何使它現在工作:http://stackoverflow.com/questions/24320469/how-to-write-activerecord-arel-intersection-query/24323622 #24323622 – 2014-06-20 15:19:29