3

ポリモーフィック フィールドで mongoid-3.0.6 を使用すると問題が発生します。rails 3.2.8 と ruby​​ 1.9.3 を使う

通常のポリモーフィック リレーションを使用する:

class Shirt
  include Mongoid::Document

  field          :name,        localize: true

  belongs_to     :itemizable,  polymorphic: true
end

class Item
  include Mongoid::Document

  field       :price,     type: Float
  field       :quantity,  type: Integer,   :default => 1

  has_one     :product,   as: :itemizable

  accepts_nested_attributes_for :product
end

メタデータを介して同じ関連付けを利用できます。

>> Item.reflect_on_association(:product)
#<Mongoid::Relations::Metadata
   autobuild:    false,
   class_name:   Product,
   cyclic:       nil,
   dependent:    nil,
   inverse_of:   nil,
   key:          _id,
   macro:        has_one,
   name:         product,
   order:        nil,
   polymorphic:  true,
   relation:     Mongoid::Relations::Referenced::One,
   setter:       product=,
   versioned:    false>

>> item = Item.new
#<Item _id: 50606c1668ce87692e000003, _type: nil, created_at: nil, updated_at: nil, deleted_at: nil, price: nil, quantity: 1>

しかし、私が走るとき

>> item.product = Shirt.new or >> item.build_product

私はいつも同じエラーが発生しました

NameError: uninitialized constant Product

フルスタックエラー

何かご意見は?

前もって感謝します。

解決済み

  • 動機を見つけた

class_name をリレーションに追加する必要があります

has_one     :product,   as: :itemizable, class_name: "Toy"
4

0 に答える 0