具有旧式架构和组合键的单表继承

时间:2012-08-06 19:46:35

标签: ruby-on-rails activerecord single-table-inheritance

我正在尝试使用旧架构设置单表继承,但我很难过。这是表bms_codes的架构,继承自:

create_table "bms_codes", :id => false, :force => true do |t|
  t.decimal  "code_id",                               :null => false
  t.string   "code_group",             :limit => 35,  :null => false
  t.string   "code_name_short",        :limit => 100
  ...
end

这是code.rb.我已经设置了列别名,因此有一个要继承的类型列。

class Code < ActiveRecord::Base
  set_table_name :bms_codes
  set_primary_keys :code_id, :code_group #composite keys using the composite_primary_keys gem

  alias_attribute :id, :code_id
  alias_attribute :type, :code_group
  alias_attribute :description, :code_name_short
end

据我所知,inquiry_tracking_role.rb应该从代码中提取所有具有“查询跟踪角色”类型的记录。它是否正确?在控制台中,如果我键入InquiryTrackingRole.all,我得到的结果与Code.all相同。

class InquiryTrackingRole < Code
end

我正在尝试做什么,或者我们的架构是否过于富裕?

1 个答案:

答案 0 :(得分:0)

ActiveRecord假设数据库属于应用程序,并且数据库将遵循ActiveRecord约定和假设。它不是为将任何架构映射到任何域模型而设计的。

如果要将架构映射到域模型,可以尝试使用DataMapper。