現在、Factory Girl でマルチテーブル継承を実装しようとしています。したがって、パラメーター「biz_type 」を持つモデル「ビジネス」があり、バー、レストラン、ホテルなどのさまざまなタイプのビジネスモデルがあります。私がやろうとしているのは、biz_types のモデルの 1 つにリンクする関連付け "biz"を作成することです。ご覧のとおり、ビジネス モデルは順次生成されます。最初はバー、次にレストラン、ホテル、そしてまたバー…という具合です。
ただし、「biz_type」シーケンスの値にアクセスできないようです。このコードを実行すると、エラーin block (2 levels) in <top (required)>': undefined method downcase' for #<FactoryGirl::Declaration::Implicit:0x000000034c6550> (NoMethodError)
が発生します。を介して値にアクセスしようとしましたbiz_type.to_attributes[0].to_proc.call.downcase.to_sym
。これはほぼ成功しましたが、これは一種のハックなソリューションであり、常に最初のタイプのビジネス (この例では「バー」) のみを提供します。
各 business.biz が異なる生成されたビジネス モデルを提供するようにビジネス ファクトリを設定する方法はありますか?
FactoryGirl.define do
factory :business do
sequence :biz_type do |n|
case n % 3
when 1
"Bar"
when 2
"Restaurant"
when 0
"Hotel"
end
end
association :biz, factory: biz_type.downcase.to_sym
end
end
in block (2 levels) in <top (required)>': undefined method downcase' for #<FactoryGirl::Declaration::Implicit:0x000000034c6550> (NoMethodError)