コールバックを使用して管理製品コントローラを変更して、各ユーザーのリスティングを作成します。 Spree製品モデルでデコレータを使用して、 "belongs_to:user"関係を追加しました。カスタムユーザーモデルでは、「has_many:products」リレーションを追加し、product_idとindex product_idをユーザーデータテーブルに追加しました。 私はこれを持っている:Rails 4 Spreeコールバックを呼び出す "ユーザーxxxxxの未定義メソッド"
Spree::Admin::ProductsController.class_eval do
create.before :user_products
private
def user_products
@user.objects.build params[object_name]
end
end
object_nameのがResourceControllerから継承された関数です。現在のオブジェクト名 "product"を含む文字列を返します。
しかし、動作していません。ユーザーXXXXXの "未定義のメソッドオブジェクト"が表示されています 私の関連付けが機能していないように見えます。私は間違って何をしていますか?前もって感謝します。
カスタムモデルの名前は何が間違っているし、ユーザーと製品との関係 –
私のカスタムモデルはユーザーと呼ばれます。私が持っているシュプレー製品モデルでは 'スプリー::製品' :: has_manyの製品、CLASS_NAME:私は持っているユーザーモデルでは ユーザー、CLASS_NAME:Spree.user_class.to_s他 belongs_toの:ユーザー Spree.user_class belongs_toの場合は、 – aminhs
はい、あなたのアソシエーションが間違っていますuser_idがユーザのテーブルのproduct_idの代わりにspree_productsテーブルにあるはずです –