将模型映射到多个数据库表

时间:2012-06-25 08:45:12

标签: ruby-on-rails orm ruby-on-rails-3.2

我的数据库中有2个表,国家假日(日期,国家/地区ID)和本地假期(日期,城镇ID)。我不能合并这两个表,因为在每种情况下,第二个属性是不同表的FK。

因为这两种类型的假期将从相同的视图中管理,就像它是一样,我想将这些表映射到单个rails模型(date,id,isNational),其中isNational将是一个布尔值来指示类型。我怎么能做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:1)

为什么不使用以下属性创建一个以exemple Holiday命名的唯一表:

add_column :holidays, :date, :datetime
add_column :holidays, :is_national, :boolean, default: false

答案 1 :(得分:0)

您希望了解多态关系。

Holiday
 # area_type: string, area_id: integer, date: date
 belongs_to :area, :polymorphic => true

Town
  has_many :holidays, :as => area
  belongs_to :country

  def all_holidays
    # array of all holidays, both local and national.
    self.holidays + self.country.holidays
  end

Country
  has_many :holidays, :as => area