我不确定为什么会这样,但是我正在尝试使用Company
和URLs
模型创建嵌套属性。
这就是我所拥有的:
# app/models/company.rb
class Company < ApplicationRecord
has_many :urls, dependent: :destroy
end
。
# app/models/url.rb
class Url < ApplicationRecord
belongs_to :Company
end
。
例如,我有这个:
urls = [{:url=>"http://audit.site.com/"},
{:url=>"http://bidboard.site.com/"},
{:url=>"http://careers.sit.com/"}]
并且我正在尝试通过执行以下操作来创建一个与这些URL相关联的新公司:
company = Company.new(company_name: @report_data[:company_name], domain: @report_data[:domain])
company.urls.build(urls)
company.save
,我从控制台收到回滚错误,不知道为什么。我相信这应该相对简单。基本上,用户将公司名称提交到此表单并开始该过程。
据我了解,我的迁移记录应该可以。他们在这里:
class CreateCompanies < ActiveRecord::Migration[5.1]
def change
create_table :companies do |t|
t.string :company_name
t.string :domain
t.timestamps
end
end
end
和
class CreateUrls < ActiveRecord::Migration[5.1]
def change
create_table :urls do |t|
t.belongs_to :company, foreign_key: true
t.string :url
t.timestamps
end
end
end
知道我在做什么错吗?
编辑
因此,在致电company.errors
之后,我将看到以下内容:
@base=#<Company:0x00007f71800f0e80 id: nil, company_name: "Random", domain: "random.com", created_at: nil, updated_at: nil>,
@details=
{:urls=>
[{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
{:error=>:invalid},
...
答案 0 :(得分:1)
使用嵌套属性时,您需要使用inverse_of
基本上,您的关联是这样的:
class Company < ApplicationRecord
has_many :urls, dependent: :destroy, inverse_of: :company
end
class Url < ApplicationRecord
belongs_to :company, inverse_of: :urls
end
浏览此link可以更好地了解
我也建议您使用save!
来查看失败的原因。
答案 1 :(得分:0)
请发布您的服务器日志,确保您拥有: