2012-03-21 73 views
1

我對數據庫和Rails(使用3.2)都是新手,我懷疑這是一個基本問題,我只是無法找到答案爲。Rails 3:鏈接`has_many`與最後一個表的條件的關係,沒有過多的查詢

我正在製作一個應用程序,用於跟蹤人們提交給期刊的文章。所以,每個用戶都有一些文章。對於每篇文章,他們都可以將其提交給一些期刊。提交對象本身不僅跟蹤提交的文章和提交的日誌,還跟蹤提交日期,提交方式(電子郵件,在線系統等),收到回覆的日期(如果有的話),回覆(如果有的話)(例如接受,重新提交,拒絕)。

我試圖讓用戶在一個地方查看他們的所有優秀提交。因此,對於每一個用戶,我想查詢數據庫來獲取所有提交屬於文章屬於該用戶,但只返回了其響應是空的意見書(意思是有沒有反應呢,和因此提交仍然很好)。

所以我的模型的關係如下:現在

class User < ActiveRecord::Base 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
    has_many :submissions 
end 

class Journal < ActiveRecord::Base 
    has_many :submissions 
end 

class Submission < ActiveRecord::Base 
    belongs_to :article 
    has_one :journal 
end 

,對於給定@user,我想我可以做類似

@articles_with_subs = @user.articles.joins(:submissions) 

然後

@out_subs = Array.new 
@articles_with_subs.each do |article| 
    outs = article.submissions.where("response NOT NULL") 
    @out_subs.push outs 
end 
@out_subs.flatten! 

但這似乎相當低效。我錯過了什麼可能很大很明顯的事情?

非常感謝。

回答

0
@out_subs = Submission.where("response NOT NULL") 
    .joins(:article).where(:article => {:user_id => @user.id}) 
+0

啊哈,所以我是從用戶而不是從意見反饋。謝謝! – bwk 2012-03-21 19:52:10

相關問題