0

我有一个 Rails 应用程序,有两个单独的数据库表、用户和产品。一个用户拥有_许多产品,而一个产品属于_一个用户。

当我创建一个产品时,我希望它自动将 user_id 添加到 products 表中的 user_id 数据库列中。我需要对我的 mvc 进行哪些更改以确保在创建新产品时添加正确的 user_id?

4

2 回答 2

3

您可以通过用户来确定新产品的创建范围。

例如,而不是这个:

Product.create(params[:product])

你来做这件事:

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

其中“current_user”是创建产品的用户。

于 2012-05-08T21:46:45.550 回答
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 这样的宝石也可以提供帮助。

添加到产品控制器

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 回答