2

私は2つのモデルを持っています。1つはブランドで、もう1つはproduct_detailです。brandsテーブルにはidフィールドとnameフィールドがあり、product_detailsテーブルにはフィールドid、name、price、discount、brand_idがあります。

ブランドには多くのproduct_detailsがあり、product_detailはブランドに属しています

brand.rbは次のようになります。

class Brand < ActiveRecord::Base
    has_many :product_details
end

product_details.rbは次のようになります

class ProductDetail < ActiveRecord::Base
    belongs_to :Brand, :dependent=>:destroy
end

黒点レールを使って検索しようとしています。ユーザーが入力したテキストでブランド名と製品名に基づいて検索したい。これを行うために、私は次のような検索可能なメソッドを作成しました。

class ProductDetail < ActiveRecord::Base
    belongs_to :brands, :dependent=>:destroy

     searchable do
      text :name
      text :brands do
        brands.map(&:name)
      end
    end
end

rake sunspot:reindexを実行すると

nilクラスのエラー未定義メソッドマップをスローしています

このようにコードを変更した場合

class ProductDetail < ActiveRecord::Base
    belongs_to :Brand, :dependent=>:destroy

     searchable do
      text :name
      text :Brand do
        brands.map(&:name)
      end
    end
end

product_detailクラスの未定義のメソッドbrandsのエラーをスローしています

これを行う方法を教えてください。

4

1 に答える 1

3

そのはず

belongs_to :brand, :dependent=>:destroy

ただし、ブランドに関連付けられているproduct_detailを削除するたびに、ブランドを削除してもよろしいですか?

いずれの場合も、検索可能なブロックは次のように記述する必要があります。

searchable do
  text :name
  text :brand do
    brand.name
  end
end

それがお役に立てば幸いです。

于 2012-04-05T08:11:38.543 に答える