我在作文和语言之间有关系。一种作文应该用一种语言书写。
我的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中可以添加语言表单中的组合,但我还想要一个下拉菜单在组合形式中选择不出现的语言。有什么建议吗?
你能告诉我我失败的地方吗?提前致谢
答案 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'