Rails 4查询来自has_many关联的委托属性

时间:2014-11-23 16:17:02

标签: postgresql ruby-on-rails-4 rails-activerecord

在我的Rails 4应用程序(使用PostgreSQL DB)中,我有以下模型结构:

class Product
  has_many :items
end

class Item
  belongs_to :user
  belongs_to :product
end

class User
  has_one :profile
  delegate :name, to: :profile
end

class Profile
  belongs_to :user
end

我无法通过项目的用户名对Items上的Product进行查询。我尝试过的一些事情:

Product.first
    .items
    .includes(:user)
    .where("user.name = ?", "Blah")
    .references(:user)

Item.where(product_id: 2)
    .includes(:user)
    .where("user.name = ?", "Blah")
    .references(:user)

我也尝试过类似下面的内容而没有成功:

Product.first
    .items
    .includes(user: :profile)
    .where("items.user.profile.name = ?", "Blah")
    .references(:user)

以上所有查询都会给我语法错误。我确定我做的事情很傻,但我想知道是否有人可以帮我弄清楚如何执行我的查询。

1 个答案:

答案 0 :(得分:0)

Product.first.items.joins(user: :profile).where(profiles: {name: "Blah"})