rails:polymorphism / abstract / inheritance:case study

时间:2013-01-27 22:43:40

标签: ruby-on-rails polymorphism

我试图将我的项目从php迁移到rails。哇,我已经面对一个女巫我用php解决了问题,但我无法弄清楚如何让它与rails配合使用。

这是我的表格

ads
  id
  category_id
  title
  text

ad_real_estate_details
  id
  ad_id
  nb_room
  floor

ad_car_details
  id
  ad_id
  color
  brand

以下是我成功的事情:

class Ad < ActiveRecord::Base
  attr_accessible :category_id :title, :text, :ad_real_estate_details
  has_one :ad_real_estate_details
  accepts_nested_attributes_for :ad_real_estate_details, allow_destroy: true
end

class AdRealEstateDetail < ActiveRecord::Base
  belongs_to :ad
  validates :ad_id, presence: true
end

但是,这不适用于除real_estate之外的其他类别。

所以我在考虑多态性,但多态性意味着我应该在我的&#34; ad&#34;中添加一个引用。表格到详细信息表格,并从详细信息表格中删除annonce_id,我认为这是无稽之谈,因为有些广告没有详细信息,而且没有广告就没有意义。

我还想到了一个抽象类AdDetails,而AdRealEstateDetail会继承它,但是这对于rails来说是不可能的,因为所有子类都将共享同一个表。

有没有人能解决这类问题?

感谢

1 个答案:

答案 0 :(得分:0)

您是说要根据广告类型存储不同的“详细信息”?

一个简单的解决方案是将“详细信息”序列化为JSON(或您喜欢的任何格式),并将它们存储在TEXT列中。