は、だから私は、コードのこの部分を持っているいくつかの工場のために毛羽立ち無効。FactoryGirlは私に頭痛を引き起こしている私のrails_helper</p> <pre><code>config.before(:suite) do begin FactoryGirl.lint end </code></pre> <p>に
class User
has_one :student_profile, class_name: Student
has_one :employee_profile, class_name: Employee
end
今のものは、ユーザー登録時に、ですが、私は、ユーザーのタイプに応じて異なる電子メールのレイアウトを送信する必要があります(私は分類しています登録されています。私はこのようないくつかの添付プロファイルを持つことができ、ユーザークラスが持っています自分のプロファイル、および「強い」プロファイルに応じて、私は適切なレイアウトに切り替えます。
私は、main_profileタイプの私の登録プロセスで
def layout_for_user(user)
case user.main_profile // user.employee_profile || user.student_profile || user
when Employee
'layouts/mailer/company'
when Student
'layouts/mailer/student'
else
fail ArgumentError, 'Unknown layout for profile'
end
end
に基づいてレイアウトを追加するために工夫メーラーをオーバーライドしています私は少なくともoを構築することを確認します確認を送信/ユーザーを保存する前に、NEプロファイルタイプ。
しかし、ファクトリー・ガールが&は工場のすべての種類を保存構築しようとすると思われるので、私はいくつかの工場をスキップするFactoryGirl.lintを伝える方法はありuser - Unknown layout for profile (ArgumentError)
の多くを取得していますか?それは、例えばどのプロファイルのないユーザーを持ってしても意味がありませんが、エラーはまだ私のuser
工場だけでインスタンス化してはいけません抽象工場のいくつかの並べ替えである
# rspec/factories/user.eb
FactoryGirl.define do
factory :user do
...
trait(:student) do
after(:build) do |user, evaluator|
user.student_profile = build(:student_profile,
user: user)
end
end
factory :student_user, traits: [:student]
end
ここで生成される(それ以外の場合は、原因となります上記で説明したエラー)を解決する方法はありますか?私はこの行のコメントを考えていますFactoryGirl.lint
?
私はリンターをスキップして、各model_specの初めにテストを行うことを好みます。 それ以外の場合は、特定のモデルをスキップすることができます。https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#linting-factories – davidwessman