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 が「Inquiry Tracking Role」タイプのコードからすべてのレコードを取得する必要があることを理解しています。これは正しいです?コンソールで InquiryTrackingRole.all と入力すると、Code.all と同じ結果が得られます。

class InquiryTrackingRole < Code
end

私がやろうとしていることは可能ですか、それとも私たちのスキーマはあまりにも混乱していますか?

4

1 に答える 1

0

ActiveRecord は、データベースがアプリケーションに属していること、およびデータベースが ActiveRecord の規則と仮定に従うことを前提としています。任意のスキーマを任意のドメイン モデルにマップするようには設計されていません。

スキーマをドメイン モデルにマップする場合は、DataMapper を試してみてください。

于 2012-08-06T20:42:40.890 に答える