これは非常に基本的な質問だと確信しており、関連する質問を見てきましたが、まだ混乱しています。私は RoR に非常に不慣れです - 私の無知を許してください!
( schema_to_scaffoldを介して) レガシー データベースで scaffolding を使用して mvc クラスをセットアップしました。schema.rb を開くと、主キーがデフォルト以外の名前で正しく識別されていることがわかります。
create_table "my_ncs", primary_key: "ID_NC", force: true do |m|
# etc...
end
create_table "my_revisions", primary_key: "ID_REVISION", force: true do |m|
m.decimal "ID_NC", precision: 10, scale:0, null: false
# etc ...
end
"my_nc"
oneと関連付けられた の間には、1 対多の関係があり"my_revisions"
ます。(私を混乱させる最初のことは、対応するモデルファイルMyNc
とMyRevision
が私が期待したものを表示しないということです:しかし気self.primary_key='ID_NC'
にしないでくださいself.primary_key='ID_REVISION'
)
今、私はこの関連付けとネストされたルーティングを設定して、with/my_ncs/6/my_revisions
のすべてを私に与えるような URL を持つことができるようにしようとしています。my_revisions
my_nc
ID_NC=6
これは私がそれをやろうとしている方法です:
class MyNc < ActiveRecord::Base
has_many :MyRevisions
end
class MyRevision < ActiveRecord::Base
belongs_to :MyNc, foreign_key: 'ID_NC'
end
今、私はrails console
これをテストするために を使用しようとしていますが、これは私が完全に混乱するときです:
irb(main):001:0> n = MyNc.find(6)
MyNc Load (0.0ms) SELECT `my_ncs`.* FROM `my_ncs` WHERE `my_ncs`.`ID_NC` = 6 LIMIT 1
=> #<MyNc ID_NC: 6, etc...>
irb(main):002:0> n.MyRevisions
MyRevision Load (22.0ms) SELECT `my_revisions`.* FROM `my_revisions` WHERE `my_revisions`.`my_nc_
id` = 6
Mysql2::Error: Unknown column 'my_revisions.my_nc_id' in 'where clause': SELECT `my_revisions`.* FROM `my
_revisions` WHERE `my_revisions`.`my_nc_id` = 6
my_nc_id
の代わりに、foreign_keyのデフォルト名が使用されID_NC
ます。
私は何を間違っていますか?
よろしくお願いします!