0

我正在尝试使用旧模式设置单表继承,但遇到了困难。这是表 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

我正在尝试做的事情是可能的,还是我们的架构过于fubar'ed?

4

1 回答 1

0

ActiveRecord 假设数据库属于应用程序,并且数据库将遵循 ActiveRecord 约定和假设。它并非旨在将任何模式映射到任何域模型。

如果你想将你的模式映射到你的域模型,你可以试试 DataMapper。

于 2012-08-06T20:42:40.890 回答