我想在兩個模型 Bar 和 Foo 之間創建一個樹結構。
酒吧有很多 Foos
Bar
/ | \
Foo Foo Foo
|
Bar
/ | \
Foo Foo Foo
Bar 可以選擇屬于 Foo。
酒吧有許多 Foos,無窮無盡……
我配置了這樣的東西,但它似乎沒有正確播種。
即使我注釋掉我擁有的任何驗證,我也會收到以下錯誤:
ActiveRecord::RecordInvalid: Validation failed: Foos bar must exist
我不明白為什么。
class Bar < ApplicationRecord
has_many :foos, inverse_of: :bar
accepts_nested_attributes_for :foos
end
class Foo < ApplicationRecord
belongs_to :bar, inverse_of: :foos
accepts_nested_attributes_for :bar
end
class CreateFoos < ActiveRecord::Migration[6.1]
def change
create_table :foos do |t|
t.text :description, null: false
t.timestamps
end
end
end
class CreateBars < ActiveRecord::Migration[6.1]
def change
create_table :bars do |t|
t.text :description
t.references :foo,
foreign_key: true,
null: true,
on_delete: :cascade,
on_update: :cascade
t.timestamps
end
end
end
class AddBarIdToFoosTable < ActiveRecord::Migration[6.1]
def change
add_reference :foos,
:bar,
foreign_key: true,
null: false,
on_delete: :cascade,
on_update: :cascade
end
end
Bar.create!([
{
description: 'Lorem ipsum...',
foos_attributes: [
{
description: 'Lorem ipsum...',
bar_attributes: {
description: 'Lorem ipsum...',
foos_attributes: [
{
description: 'Lorem ipsum...',
bar_attributes: {
description: 'Lorem ipsum...',
foos_attributes: [
{
description: 'Lorem ipsum...'
},
{
description: 'Lorem ipsum...'
},
{
description: 'Lorem ipsum...'
},
{
description: 'Lorem ipsum...'
}
]
}
}
]
}
}
]
}
])
uj5u.com熱心網友回復:
ActiveRecord::RecordInvalid: Validation failed: Foos bar must exist
- 這告訴您,您的 Foo 宣告之一需要存在
bar bar對 Foo 模型宣告中的參考在belongs_to關聯中belongs_to在某些版本的 rails 中默認存在驗證;更改belongs_to :bar為belongs_to :bar, optional: true可能會解決您的問題
參考:https : //github.com/rails/rails/pull/18937/files
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361359.html
標籤:红宝石轨道 红宝石 递归 ruby-on-rails-6 接受嵌套属性
上一篇:無法在測驗檔案夾下使用緊湊樣式的模塊和類(NameError)
下一篇:如何洗掉rails中的所有錄音?
