0

ユーザーと製品の 2 つの別個の DB テーブルを持つレール アプリがあります。ユーザーは_多くの製品を持ち、製品は_ユーザーに属します。

製品を作成するときに、製品テーブルの user_id データベース列に user_id を自動的に追加したいと考えています。新しい製品が作成されたときに正しい user_id が追加されるようにするには、mvc にどのような変更を加える必要がありますか?

4

2 に答える 2

3

ユーザーを通じて、新しい製品の作成のスコープを設定できます。

たとえば、これの代わりに:

Product.create(params[:product])

これをして:

current_user.products.create(params[:product])

ここで、「current_user」は製品を作成しているユーザーです。

于 2012-05-08T21:46:45.550 に答える
1

提案として、以前の質問のいくつかに戻って回答を受け入れることをお勧めします。これにより、回答率が向上し、将来誰かがあなたの質問に回答する可能性が高くなります.

これを行うにはいくつかの方法がありますが、1 つの方法は次のとおりです。

現在のユーザー関数を作成

class ApplicationController < ActionController::Base
  private
  # Finds the User with the ID stored in the session with the key
  # :current_user_id This is a common way to handle user login in
  # a Rails application; logging in sets the session value and
  # logging out removes it.
  def current_user
    @_current_user ||= session[:current_user_id] &&
      User.find_by_id(session[:current_user_id])
  end
end

http://guides.rubyonrails.org/action_controller_overview.html#session

セキュリティ上の懸念を認識していることを確認してください。Devise のような gem も役に立ちます。

製品コントローラに追加

class ProductsController < ApplicationController
  def create
    current_user.products.create! params[:product]   # make sure attr_accessible is setup on products
  end
end
于 2012-05-08T21:57:26.523 に答える