我有两个模型 - “Part”belongs_to“Category”
在这种情况下,可以采用此查询:
Part.joins(:category).where("categories.name = 'cars'").first
并创建一个哈希变异吗?我见过这样的东西:
Part.where(categories: {name: 'cars'})
然而,它为两者生成的SQL非常不同。如果(大的话)我在这里没有做错什么,那么为什么hash'd版本在这种情况下不起作用?它的工作关系是什么?
如果它有帮助我的模特:
类别模型:
class Category < ActiveRecord::Base
has_many :parts
end
零件型号:
class Part < ActiveRecord::Base
belongs_to :category
end
答案 0 :(得分:1)
您在第二个示例中错过了join()和first()方法。使用:
Part.joins(:category).where(categories: { name: 'cars' }).first