0

ユーザーの製品を保存するときに、現在のユーザーをuser_productテーブルに追加するにはどうすればよいですか。

ビルドメソッドにパラメーターを渡すことができることを示す情報をオンラインで調べましたが、これは機能しません。エラーメッセージは、「保護された属性を一括割り当てできません:user_id」です。

製品コントローラー:

def new

@product = Product.new

@product.user_products.build(:user_id => current_user)

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @product }
end

終わり

私のモデルは:Product、、UserUser_Product

クラスProduct<ActiveRecord:: Base

    attr_accessible :name, :issn, :category, :user_products_attributes

    validates_presence_of :name, :issn, :category
    validates_numericality_of :issn, :message => "has to be a number"

    has_many :user_products
    has_many :users, :through => :user_products

    accepts_nested_attributes_for :user_products

end




class UserProduct < ActiveRecord::Base

  attr_accessible :price

  validates_presence_of :price
  validates_numericality_of :price, :message => "has to be a number"

  belongs_to :user
  belongs_to :product

end

class user < ActiveRecord::Base

  # devise authentication here

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  has_many :user_products, :dependent => :destroy
  has_many :products, :through => :user_products

end
4

1 に答える 1

0

次のことをお勧めします。

Product
  has_many :preferences
  has_many :users, :through => preferences
  has_one :product_photo # if 1 per product

User
  has_many :preferences
  has_many :products, :through => :preferences

Preference
  belongs_to :user
  belongs_to :product

ProductPhoto
  belongs_to :product

何をするにしても、大文字と複数形に注意を払うようにしてください。レールはかなりうるさいからです。Railsの規則を正しく理解していないと、コードは機能しません(さらに悪いことに、認識された「問題」を回避するためにハックを書き始めることになります)。クラス定義モデル名 (参照には小文字とアンダースコアが使用されます)。

于 2012-09-02T13:46:00.727 に答える