Sql 基于多态关联的连接

Sql 基于多态关联的连接,sql,ruby-on-rails,activerecord,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

嗨,伙计们,我知道这真的是个坏主意,但我想加入三个表来查询多态关联

比如说

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 search,用户可以选择不同的选项,比如说,
用户有一条注释
,我想选择所有注释了某些内容(文章或帖子)的用户,这些内容包括一些短语,所以我需要类似于
用户的内容。全部(:joins=>{:comments=>:commentable},:conditions=>[“articles.body LIKE(?)或者posts.header,比如(?)、value、value])
我想我想做的事情是不可能的,因为

联接格式

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
我必须在可注释的_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])

我仍在重构代码,稍后我会发布结果。我想我想做的事情是不可能的,因为

联接格式

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
我必须在可注释的_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])

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

是否应该是
Comment
您的第三个类?你到底想做什么?也许我们可以建议另一种方法来实现你想要的。这不是你的第三门课吗?你到底想做什么?也许我们可以建议另一种方法,你可以实现你想要的。