我正在使用多态关联来跟踪我的项目中的评论。所有非常直接的东西。
我遇到的问题是基于多态关联进行查询并从评论模型加入到它的所有者。
所以 ...
我有一个评论模型
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
还有一个 ForumTopics 模式:
class ForumTopic < ActiveRecord::Base
has_many :comments, :as => :commentable
end
我还有其他几个现在不重要的“可评论”模型。所有这些都有效。
我要做的是找到属于具有指定条件的 ForumTopic 的所有评论(在这种情况下,'featured' == true)。
当我尝试使用查找器加入模型时:
@comments = Comment.find(:all
:joins => :commentable
:conditions => ["forum_topics.featured = ? ", true]
)
我收到以下错误:
不能急切地加载多态关联:commentable
使用 AR“包含语法”:
@comments = Comment.find(:all
:include => :forum_topics
:conditions => ["forum_topics.featured = ? ", true]
)
返回:
未找到名为“forum_topics”的关联;也许你拼错了?
如果我尝试使用表名而不是关联名称(字符串而不是符号)加入:
@comments = Comment.find(:all,
:joins => "forum_topics",
:conditions => ["forum_topics.featured = ? ", true]
)
我懂了:
Mysql::Error: Unknown table 'comments': SELECT comments。来自评论 forum_topics WHERE (forum_topics.featured = 1)*
(您可以在此处看到底层查询的语法完全关闭,并且完全缺少连接)。
不确定我正在做的事情是否可行,还有其他方法可以达到所需的结果,但似乎应该是可行的。
有任何想法吗?有什么我想念的吗?