rails_admin: 改变了关系,形式不正确
rails_admin: changed relationship, form not correct
我对作文和语言有关系。一篇作文只能用一种语言写成。
我的 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"
...
发现关系写错了,于是把模型改成这样:
- 之前
composition.rb
中有一个 belongs_to :language
行,我改为 has_one :language
- 之前
language.rb
中有一个 has_many :compositions
行,我改为 belongs_to :composition
编辑:第一个问题:我的程序是否正确?我在 Rails 的 Ruby 还是初学者。
现在,在rails_admin中,不可能selectnew
形式下的语言进行组合,有行但没有列表,框也没有任何东西,只有标签名称 'language',尽管我在其 table.
中有一个条目
编辑 2:一旦将关系恢复到我认为不正确的初始状态,在 rails_admin 中就有可能从语言形式添加组合,但我也想拥有组合形式中的下拉菜单 select 未出现的语言。有什么建议吗?
你能告诉我我哪里失败了吗?提前致谢
感谢 this upwork freelancer 我更正了它,使关系保持原来的 belongs_to
/ has_many
状态,并在 composition.rb
:
中添加了外键
belongs_to :language, :foreign_key => 'product_language_id'
Rails 假设一切都将按照惯例进行。所以 table 的外键应该是 tablename_id
。当我们打破惯例时,我们必须在我们的模型中添加额外的选项来告诉 Rails 外键不是它所期望的,它有些不同。
我们也可以这样写:
belongs_to :product_language, class_name: 'Language'
我对作文和语言有关系。一篇作文只能用一种语言写成。
我的 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"
...
发现关系写错了,于是把模型改成这样:
- 之前
composition.rb
中有一个belongs_to :language
行,我改为has_one :language
- 之前
language.rb
中有一个has_many :compositions
行,我改为belongs_to :composition
编辑:第一个问题:我的程序是否正确?我在 Rails 的 Ruby 还是初学者。
现在,在rails_admin中,不可能selectnew
形式下的语言进行组合,有行但没有列表,框也没有任何东西,只有标签名称 'language',尽管我在其 table.
编辑 2:一旦将关系恢复到我认为不正确的初始状态,在 rails_admin 中就有可能从语言形式添加组合,但我也想拥有组合形式中的下拉菜单 select 未出现的语言。有什么建议吗?
你能告诉我我哪里失败了吗?提前致谢
感谢 this upwork freelancer 我更正了它,使关系保持原来的 belongs_to
/ has_many
状态,并在 composition.rb
:
belongs_to :language, :foreign_key => 'product_language_id'
Rails 假设一切都将按照惯例进行。所以 table 的外键应该是 tablename_id
。当我们打破惯例时,我们必须在我们的模型中添加额外的选项来告诉 Rails 外键不是它所期望的,它有些不同。
我们也可以这样写:
belongs_to :product_language, class_name: 'Language'