У меня есть модель магазина и модель покупателя.У магазина может быть много покупателей, а покупатель может покупать вещи во многих магазинах.Для этого отношения я создал модель соединения 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
Владельцы магазинов хотят иметь возможность группировать покупателей, и поэтому я добавил другую модель 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
Это правильный способ создания такого рода отношений, или это рецепт гибели, и я что-то упускаю, чтобы это не сработало.