次の 3 つのモデルがあります。
class Group < ActiveRecord::Base
attr_accessible :name
has_many :users
has_and_belongs_to_many :suppliers,
:class_name => "Group",
:foreign_key => "customer_id",
:association_foreign_id => "supplier_id"
has_and_belongs_to_many :customers,
:class_name => "Group",
:foreign_key => "supplier_id",
:association_foreign_id => "customer_id"
has_many :orders, :as => :orderable
validates :name => :presence => true
end
class User < ActiveRecord::Base
attr_accessible :email, :name
has_many :orders, :as => :orderable
belongs_to :group
validates :email, :name, :group_id, :presence => true
end
class Order < ActiveRecord::Base
belongs_to :orderable, :polymorphic => true
validates :orderable_id, :presence => true
end
自己結合Group
モデルによれば、グループには と の 2 つの「タイプ」がcustomers
ありsuppliers
ます。
ここで、グループ タイプhas_many :orders, :as => :orderable
に対してのみ関連付けが存在し、 に対しては存在しないようにします。customer
suppliers
したがって、 のみcustomer
が多くの注文を持つことができ、 は関連付けるsupplier
ことができませんOrder
。
これを達成する方法はありますか?または、Group
モデルをCustomer
とSupplier
モデルに分割する必要がありますか?
ありがとう!