小さなモンゴイド ショッピング カートを持つレール用の gem を作成します。
取得するモデルに含めることで実装されますinclude MongoidCart::ActsAsProduct
class MyProduct
include Mongoid::Document
include MongoidCart::ActsAsProduct
end
module MongoidCart
class CartItem
include Mongoid::Document
belongs_to :mongoid_cart_cart, :class_name => 'MongoidCart::Cart'
end
end
module MongoidCart
class Cart
include Mongoid::Document
field :user_id, type: String
has_many :cart_items, :inverse_of => :cart, :class_name => 'MongoidCart::CartItem'
belongs_to :customer, :inverse_of => :carts, :class_name => MongoidCart.configuration.customer_model_name
end
end
-class の -class を -classに持ち込むのに問題がclass_name
あります。クラスへの関係を自動的に追加する必要があります。私が持っているように「ハードコード」すると、エラーはありません。Product
CartItem
MongoidCart::CartItem
:my_product
どうすれば:the_class_to_point_to_as_symbol
ダイナミックにできますか?
module MongoidCart
module ActsAsProduct
extend ActiveSupport::Concern
included do
#adds dynamic association to the CartItem to refer to the ActsAsProduct class
MongoidCart::CartItem.class_eval(
'belongs_to :the_class_to_point_to_as_symbol, :class_name => "Product", inverse_of: :cart_item'
)
end
end
end