多くのパッケージを持ち、それに属するモデル カテゴリがあります。ユーザーがカテゴリで投稿を作成する場合、それはそのカテゴリ内のパッケージに属している必要があります。
カスタム バリデータのコードは次のとおりです。
class PackageValidator < ActiveModel::Validator
def validate(record)
record.errors[:package_id] <<
I18n.t('errors.messages.package.not_in_category') unless
record.category.packages.include? record.package
end
end
これはうまく機能しますが、factory_girl はカテゴリごとに新しいパッケージを作成し、それを使用して作成/作成するため、(factory_girl を使用した) すべての rspec テストを中断します。
ここに私の工場があります:
factory :category do
sequence(:name) {|n| "Parts#{n}"}
sequence(:slug) {|n| "parts#{n}"}
packages {[FactoryGirl.create(:package)]}
end
factory :posting do
title 'Foo'
body 'Bar'
category
package
end
factory :package do
sequence(:name) {|n| "Basic#{n}"
price 0
photos 5
end
どうすればすべてをうまく連携させることができますか?