where是处理将current_user.id写入对象的适当位置

时间:2012-02-22 22:21:55

标签: ruby-on-rails activerecord

我没有使用Devise但是已经实现了一个简单的身份验证方案(基本上在这里概述http://railscasts.com/episodes/250-authentication-from-scratch),相关部分在这里:

application_controller.rb

helper_method :current_user

private
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

我有一个必须授权用户添加的资产列表。我正在使用回形针。用户可以has_many和资产belongs_to用户(尽管这与其分配的位置基本无关,因为我的资产模型对于不同的assetable_types是多态的)。

我应该将current_user id分配给资产?我会在模型中思考;也许我应该使用session [:user_id]来做一个default_values,但这看起来有点难看。

此外,这些是nested_attributes以及这些嵌套到的模型,目前对该用户一无所知。实际上,current_user的信息源不是当前关联的一部分。

THX

编辑1 我应该根据会话[:user_id]值创建一个用户实例,还是只将其推入?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,为什么不将用户分配给资产,无论哪个控制器首先发现资产属于用户?控制器有责任将Web请求(包括会话/当前用户)转换为适用于该模型的内容。