Rails 3:链接`has_many`与最后一个表的条件的关系,没有过多的查询
问题描述:
我对数据库和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!
但这似乎相当低效。我错过了什么可能很大很明显的事情?
非常感谢。
答
@out_subs = Submission.where("response NOT NULL")
.joins(:article).where(:article => {:user_id => @user.id})
啊哈,所以我是从用户而不是从意见反馈。谢谢! – bwk 2012-03-21 19:52:10