2

現在、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)

4

0 に答える 0