我有一个模特商店和一个模特顾客。商店可以拥有许多客户和客户 可以从很多商店买东西。对于这种关系,我创建了一个连接模型 ShopCustomers。
create_table :shop_customers do |t|
t.integer :shop_id
t.integer :customer_id
t.timestamps
end
模型
class Shop < ActiveRecord::Base
has_many :shop_customers, :dependent => true
has_many :customers, :through => shop_customers
has_many :customers_groups
end
class Customer < ActiveRecord::Base
has_many :shop_customers, :dependent => true
has_many :shops, :through => shop_customers
belongs_to :customers_group_membership
end
class ShopCustomer < ActiveRecord::Base
belongs_to :shop
belongs_to :customer
end
店主希望能够对客户进行分组,因此我添加了另一个 model CustomersGroups。
class CustomersGroup < ActiveRecord::Base
belongs_to :shop
end
客户通过其他联接模式添加到组中。
create_table :customers_group_memberships do |t|
t.integer :customers_group_id
t.integer :customer_id
end
class CustomersGroupMembership < ActiveRecord::Base
has_many :customers
belongs_to :customers_group
end
这是做这种关系的正确方法,还是这个方法 对于厄运而言,我错过了一些不会起作用的东西。
答案 0 :(得分:0)
不,这不是通常的做法。看看“已经和属于很多”协会(又名:HABTM)。它将为您创建shops_customers连接表并在不必手动操作的情况下进行维护。
这是HABTM上apidock的链接:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many