Я работаю над проектом, с которым у многих моделей ActiveRecord может быть связан разговор. Пользователи могут обсуждать практически все аспекты сайта. У меня есть две идеи относительно того, как это должно быть реализовано.
1) Используйте в активе принадлежащий принадлежность, а не беседу - беседа не будет полностью осведомлена о его активе
class Product< ActiveRecord::Base
belongs_to :conversation
end
class PurchaseOrder < ActiveRecord::Base
belongs_to :conversation
end
2) Использовать в разговоре a__:, polymorphic => true
class Conversation < ActiveRecord::Base
belongs_to :asset, :polymorphic => true
end
class Product < ActiveRecord::Base
has_one :conversation, :as => :asset
end
class PurchaseOrder < ActiveRecord::Base
has_one :conversation, :as => :asset
end
Как правильно моделировать эти отношения? Если бы мне нужно было заявить об отношениях, я бы сказал, что «заказ товара / покупки может состоять из одного разговора».