Как использовать 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

Другие вопросы по тегам