我确信这是一个非常基本的问题,并且我已经看到了相关的问题,但我仍然感到困惑。我对 RoR 非常缺乏经验 - 请原谅我的无知!
我已经在遗留数据库上使用脚手架设置了 mvc 类(通过schema_to_scaffold)。当我打开 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和关联的之间存在一对多的关系"my_revisions"
。(首先让我感到困惑的是相应的模型文件MyNc
并MyRevision
没有显示我的预期:self.primary_key='ID_NC'
但self.primary_key='ID_REVISION'
没关系)
现在我正在尝试建立这个关联和嵌套路由,以便能够拥有一个像 say /my_ncs/6/my_revisions
give me all the my_revisions
for the my_nc
with这样的 url 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
使用 foreign_key的默认名称my_nc_id
,而不是ID_NC
.
我究竟做错了什么?
非常感谢提前!