在rails4中寻找简单的habtm范围语法

时间:2014-10-25 17:53:53

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

我有两个具有habtm关系的模型:

class Contact < ActiveRecord::Base
  has_and_belongs_to_many :contact_types
end

class ContactTypes < ActiveRecord::Base
  has_and_belongs_to_many :contacts
end

和一个与之相关的contact_types_contacts表。

我正在尝试创建一个范围,用于选择与特定ContactType相关的联系人。我尝试了几种语法,但没有一种方法有效。

例如

scope :suppliers,  -> { where(contact_types: 1) }

原因

  

SQLite3 :: SQLException:没有这样的列:contacts.contact_type_id:   选择“联系人”。* FROM“联系人”WHERE   “contacts”。“contact_type_id”= 1 ORDER BY contacts.name asc LIMIT 20   OFFSET 0

有没有人建议我这个想法?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您忘记添加连接并指定db列。

scope :suppliers,  -> { joins(:contact_types).where(contact_types: { id: 1}) }