查询has_many Rails

时间:2014-10-16 00:22:17

标签: ruby-on-rails ruby

我有一个包含许多多态附件的帖子模型。附件可以是文本模型,照片模型,问题模型或视频模型。帖子可以有多个附件,以便它可以有文本附件和照片附件。尝试仅检索文本和问题帖子时出现问题。如果我执行以下操作,则会返回包含文本附件的所有帖子,包括照片帖子。这个问题是它返回带有照片附件和文本附件的帖子。我想检索只包含文字附件或问题附件的帖子,而不是其他附件。我该怎么做呢?

以下是我目前使用的查询:

Post.joins(:attachments).where("attachments.media_type IN (:types)", user_id:types:["Text", "Question"])

1 个答案:

答案 0 :(得分:0)

如果media_type是存储模型类名称的列,即:TextQuestion等,那么您的代码几乎是正确的,并且需要进行非常小的修改它的工作原理:

Post.joins(:attachments).
     where(:attachments => {:media_type => ["Text", "Question"]})