0

Railsからレガシーデータベーススキーマにアクセスしたい。主キーOBJECT_IDを持つ1つのテーブルNAGIOS_OBJECTSと、列HOST_OBJECT_IDを持つNAGIOS_OBJECTSを参照する1つのテーブルNAGIOS_HOST_CHECKSがあります。したがって、関係を次のように定義しました。

class NagiosObject < ActiveRecord::Base
  has_one :nagios_host_check, :foreign_key => :host_object_id, :primary_key => :object_id
end

class NagiosHostCheck < ActiveRecord::Base
  belongs_to :nagios_object, :foreign_key => :host_object_id, :primary_key => :object_id
end

ただし、a_nagios_object.nagios_host_checkまたはa_nagios_host_check.nagios_objectを呼び出すと、常にnilになります。

私のコードの何が問題になっているのでしょうか?

4

1 に答える 1

2

external_keyとprimary_keyは、記号ではなく文字列である必要があります

元:

class NagiosObject < ActiveRecord::Base
  has_one :nagios_host_check, :foreign_key => 'host_object_id', :primary_key => 'object_id'
end

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M001317

于 2010-07-05T18:01:05.553 に答える