在Activerecord中,您可以使用哈希选择器而不是连接查询来通过belongs_to关系查找记录吗?

时间:2014-02-04 19:36:35

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

我有两个模型 - “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

1 个答案:

答案 0 :(得分:1)

您在第二个示例中错过了join()和first()方法。使用:

Part.joins(:category).where(categories: { name: 'cars' }).first