Я изо всех сил пытался настроить отношения has_many через Factory Girl. У меня есть две модели курса и категории, курс может иметь много категорий, у меня есть два курса и категории фабрик.
У меня есть эти три модели
class Course < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: [:slugged, :history]
has_many :categorisations
has_many :categories, :through=> :categorisations
belongs_to :partner
belongs_to :user
# validates_uniqueness_of :title
validates :title, presence: true
# validates :start_date, presence: true
# validates :duration, presence:true
# validates :state, presence:true
validates :categories, length: { minimum: 1 , message:"please select"}
validates :partner_id, presence: true, allow_nil: false
end
end
class Category < ActiveRecord::Base
has_many :categorisations
has_many :courses, :through=> :categorisations
belongs_to :user
#validation
validates :name, presence: true , uniqueness: { scope: :name }
end
class Categorisation < ActiveRecord::Base
belongs_to :category
belongs_to :course
end
Заводы
FactoryGirl.define do
factory :course do |f|
f.title "Introduction to Accounting short course"
f.start_date "2014-02-27 00:00:00"
f.duration "10 WEEKS ONLINE"
partner
categorisation
end
# join table factory - :category
factory :categorisation do |categorisation|
categorisation.association :course
categorisation.association :category
end
end
Категория Фабрика в отдельном файле
FactoryGirl.define do
factory :category do |f|
f.name "Marketing"
end
end
Ошибка, которую я получаю при запуске тестов:
У партнера есть действующая фабрика для курса Ошибка/ошибка: expect(FactoryGirl.create(:course)).to be_valid ActiveRecord::RecordInvalid: Ошибка проверки: имя уже занято
Что я хочу сделать, так это создать курс с одной или несколькими категориями, я не уверен, что я здесь делаю неправильно, но мне нужно, чтобы фабрика курсов была действительной. Я знаю, что моя фабрика категорий действительна.
Похоже, он дважды пытается создать категорию, поэтому выдает ошибку, что имя уже существует.
Course#title
? Думаю проблема в вашемCourse
. Можете ли вы предоставитьerrors
модели вашего курса? - person xlembouras   schedule 25.04.2014