2016-11-23 16 views
1

コールバックを使用して管理製品コントローラを変更して、各ユーザーのリスティングを作成します。 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の "未定義のメソッドオブジェクト"が表示されています 私の関連付けが機能していないように見えます。私は間違って何をしていますか?前もって感謝します。

+0

カスタムモデルの名前は何が間違っているし、ユーザーと製品との関係 –

+0

私のカスタムモデルはユーザーと呼ばれます。私が持っているシュプレー製品モデルでは 'スプリー::製品' :: has_manyの製品、CLASS_NAME:私は持っているユーザーモデルでは ユーザー、CLASS_NAME:Spree.user_class.to_s他 belongs_toの:ユーザー Spree.user_class belongs_toの場合は、 – aminhs

+0

はい、あなたのアソシエーションが間違っていますuser_idがユーザのテーブルのproduct_idの代わりにspree_productsテーブルにあるはずです –

答えて

0

あなたの外部キーは、それがここに

をUSER_IDしている必要があり、この

class User < ActiveRecord::Base 
    has_many :products 
end 

Class Product < ActiveRecord::Base 
    belongs_to :user 
end 

Productsテーブルのようにする必要があります参照http://guides.rubyonrails.org/association_basics.html#the-has-many-association

enter image description here

+0

ありがとうございました。できます。 – aminhs

+0

ようこそ@aminhs –

関連する問題