Как использовать FactoryGirl для создания данных с has_many через ассоциацию и некоторые ненулевые столбцы
У меня есть такая модель
class Article < ActiveRecord::Base
has_many :comments
has_many :details, :through => :comments
end
class Comment < ActiveRecord::Base
belongs_to :article
belongs_to :detail
end
class Detail < ActiveRecord::Base
has_many :comments
end
и я хочу создать статью с деталями, вот что я делаю
factory :article do
title "My Title"
text "My Text"
factory :article_with_detail do
after(:create) do |article|
article.details << FactoryGirl.create(:detail)
end
end
end
factory :detail do
content "My Detail"
end
Пока все работает нормально, но когда я хочу добавить в мою модель комментарий, который делает столбец комментария не может быть нулевым
class ChangeCommentCommenterToNotNull < ActiveRecord::Migration
def change
change_column :comments, :commenter, :string, :null => false
end
end
теперь я запускаю грабли spec будет получено сообщение об ошибке:
ActiveRecord::StatementInvalid:
SQLite3::ConstraintException: NOT NULL constraint failed: comments.commenter: INSERT INTO "comments" ("detail_id", "article_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)
Как я могу обойти это? Пожалуйста, помогите ~
1 ответ
Как твоя Comment
выглядит фабрично? commenter
атрибут должен быть установлен на что-то, чтобы не быть ноль.
РЕДАКТИРОВАТЬ: создать новый заводской файл Comment
в вашем factories
каталог (не забудьте установить commenter
что-л.)
factory :comment do
commenter "first comment"
body "Great article!"
detail
end
https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations