rails_admin:关系改变,形式不正确

时间:2017-02-07 16:57:52

标签: ruby-on-rails forms rails-admin rails-models

我在作文和语言之间有关系。一种作文应该用一种语言书写。

我的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"
...

我意识到关系写错了,所以我把模型改成了这样:

  • 之前在belongs_to :language中有一条composition.rb行,我更改为has_one :language
  • 之前在has_many :compositions中有一条language.rb行,我更改为belongs_to :composition

编辑:第一个问题:我做的程序是否正确?我还是Ruby on Rails的初学者。

现在,在rails_admin中,没有可能选择new表单下的语言进行组合,有行但没有列表,框也没有任何东西,只有标签名称'语言',虽然我的表中有一个条目。

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

你能告诉我我失败的地方吗?提前致谢

1 个答案:

答案 0 :(得分:0)

感谢this upwork freelancer我更正了原来belongs_to / has_many状态的关系,并在composition.rb添加了外键:

belongs_to :language, :foreign_key => 'product_language_id'

Rails假定一切都将按照惯例完成。因此,表的外键预计为tablename_id。当我们违反约定时,我们必须在模型中添加其他选项,以告诉Rails外键不是它所期望的,它的东西是不同的。 我们也可以这样写:

belongs_to :product_language, class_name: 'Language'