Ruby on rails rails\u管理员:关系已更改,表单不正确

Ruby on rails rails\u管理员:关系已更改,表单不正确,ruby-on-rails,forms,rails-admin,rails-models,Ruby On Rails,Forms,Rails Admin,Rails Models,我在作文和语言之间有一种联系。一篇作文只能用一种语言写 Myschema.rb包含以下行: ... create_table "compositions", force: :cascade do |t| ... t.integer "product_language_id", null: false end ... add_foreign_key "compositions", "languages", column: "product_language_id" ... 我

我在作文和语言之间有一种联系。一篇作文只能用一种语言写

My
schema.rb
包含以下行:

...
create_table "compositions", force: :cascade do |t|
    ...
    t.integer  "product_language_id", null: false
end

...
add_foreign_key "compositions", "languages", column: "product_language_id"
...
我意识到这段关系写错了,所以我把模型改成这样:

  • 以前在
    作文中有一行
    属于:language
    。我改为
    的rb
    有一行:language
  • 以前,在
    语言中有一行
    has\u many:compositions
    行。rb
    我改为
    属于:composition
编辑:第一个问题:我制定的程序正确吗?我还是RubyonRails的初学者

现在,在rails_admin中,无法在
new
表单下选择用于合成的语言,有行但没有列表、框或任何内容,只有标签名“language”,尽管我在它的表中有一个条目

编辑2:一旦将关系恢复到我认为不正确的初始状态,在rails_admin中,可以从语言表单中添加组合,但我希望在组合表单中也有一个下拉菜单来选择语言,它不会出现。有什么建议吗

你能告诉我哪里不及格吗?提前感谢

感谢我更正了它,将关系保留在其原始的
所属的
/
具有许多
状态,并在
组合中添加了外键。rb

belongs_to :language, :foreign_key => 'product_language_id'
Rails假定一切都将按照约定进行。因此表的外键应该是
tablename\u id
。当我们打破惯例时,我们必须在模型中添加额外的选项,告诉Rails外键不是它所期望的,它是不同的。 我们也可以这样写:

belongs_to :product_language, class_name: 'Language'
多亏我更正了它,才将关系保留在其原始的
所属的
/
中,并且在
组合中添加了外键。rb

belongs_to :language, :foreign_key => 'product_language_id'
Rails假定一切都将按照约定进行。因此表的外键应该是
tablename\u id
。当我们打破惯例时,我们必须在模型中添加额外的选项,告诉Rails外键不是它所期望的,它是不同的。 我们也可以这样写:

belongs_to :product_language, class_name: 'Language'