Ruby on Rails has_many:通过关联。这会有用吗?

时间:2011-12-06 14:54:41

标签: ruby-on-rails ruby-on-rails-3 database-design activerecord entity-relationship

我有一个模特商店和一个模特顾客。商店可以拥有许多客户和客户 可以从很多商店买东西。对于这种关系,我创建了一个连接模型 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

这是做这种关系的正确方法,还是这个方法 对于厄运而言,我错过了一些不会起作用的东西。

1 个答案:

答案 0 :(得分:0)

不,这不是通常的做法。看看“已经和属于很多”协会(又名:HABTM)。它将为您创建shops_customers连接表并在不必手动操作的情况下进行维护。

这是HABTM上apidock的链接:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many