2

多くのパッケージを持ち、それに属するモデル カテゴリがあります。ユーザーがカテゴリで投稿を作成する場合、それはそのカテゴリ内のパッケージに属している必要があります。

カスタム バリデータのコードは次のとおりです。

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

どうすればすべてをうまく連携させることができますか?

4

1 に答える 1

0

パッケージをフックcategory.packages.firstに設定できます。after(:build)

于 2012-12-30T01:33:36.633 に答える