Модель Rails 3 с принадлежащими к различным таблицам исключительно в каждой записи - PullRequest
3 голосов
/ 16 июня 2011

У меня есть некоторые модели, подобные этим:

class Alpha < ActiveRecord::Base
 has_many :items 
end    

class Beta < ActiveRecord::Base
 has_many :items
end

class Item < ActiveRecord::Base
 belongs_to :alpha
 belongs_to :beta
end

Но я хочу, чтобы модель элементов в каждой записи базы данных принадлежала либо альфе, либо бете, но НЕ обеим.Любой хороший способ сделать это в Rails 3?или я должен вместо этого смоделировать это с AlphaItems и BetaItems?

1 Ответ

8 голосов
/ 17 июня 2011

Вы, вероятно, хотите использовать Полиморфную Ассоциацию для этого. Подробнее - http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

class Alpha < ActiveRecord::Base
  has_many :items, :as => :itemable
end    

class Beta < ActiveRecord::Base
  has_many :items, :as => :itemable
end

class Item < ActiveRecord::Base
  belongs_to :itemable, :polymorphic => true
end
...