Я не уверен, почему это происходит, но я пытаюсь создать вложенные атрибуты с 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},
...