Rails使用关联-has_many进行查询



如果我有一个名为User的模型,它具有:

has_many     :parent_relationships,
:class_name            => "Relationship",
:foreign_key           => :child_id,
:dependent             => :destroy,
:uniq => true
has_many     :parents,
:through               => :parent_relationships,
:source                => :parent

所以,我希望能够找到至少有一个家长的用户。现在,如果我获取一个特定的用户并执行user.parents,我会得到父级的列表,但在where子句中如何做到这一点?

我担心的是,现在我是这样获取的:

User.where({:role => 'Teen'})

所以,我想找到所有的用户,他们的角色是一个青少年,谁至少有一个父母。此外,更复杂的是,我想考虑另一个关联:

has_and_belongs_to_many :notifications

我想找到那些有通知的用户,其名称属性是"电子邮件"。

感谢

一个联接应该做到这一点:

User.joins(:parents).uniq

由于这会创建一个INNER JOIN,因此它将只返回带有父级的记录。uniq删除联接可能返回的重复记录。

编辑

你的方法链可以这样工作:

User.includes(:notifications).joins(:parents).where(:role => "Teen").where("notifications.name = 'email'")

相关内容

  • 没有找到相关文章

最新更新