加入多态关联

时间:2010-08-13 18:49:02

标签: sql ruby-on-rails activerecord

大家好,我知道这是一个非常糟糕的主意,但我想加入三个表来查询多态关联

例如

class Article
  has_many :comments, :as=>:commentable
end

class Post
  has_many :comments, :as=>:commentable
end

class Comment
  belongs_to :commentable, :polymorphic=>:true
end

我需要得到与

相似的东西
Comment.all(:joins=>:commentable)

当然我无法写出这样的连接,但我需要能够加入这三个表的东西

我正在通过几个表编写cimplicate搜索用户可以选择不同的选项让我们说User has_one Comment并且我想要选择所有注释某些内容(文章或帖子)的用户,其中包含一些短语所以我需要类似于{的东西{1}}

1 个答案:

答案 0 :(得分:0)

我想我想做的事情是不可能的,因为

加入格式

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

我必须在commentable_id上​​加入表格而不会对不同的表格产生任何影响这可能是一团糟但也许我错了

<强>编辑 我接下来做了

User.all(:joins=>"clean sql inner join of three tables on commentable_id", 
:conditions=>[" (comments.commentable_class="Article" AND articles.body LIKE (?)) 
             OR (comments.commentable_class="Post" AND posts.header LIKE (?))", value, value])

我仍在重构代码,稍后我会发布结果

相关问题