【发布时间】:2012-02-23 07:34:50
【问题描述】:
我没有使用 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
我有一个用户必须有权添加的资产列表。我正在使用回形针。一个用户可以拥有_many 和一个资产属于一个用户(尽管这本质上与它的分配位置无关,因为我的资产模型对于不同的资产类型是多态的)。
我应该在哪里将 current_user id 分配给资产?我会在模型中思考;也许我应该使用 session[:user_id] 做一个 default_values 但这似乎有点难看。
此外,这些是nested_attributes 和这些嵌套的模型,目前对用户一无所知。因此,current_user 的信息来源实际上并不是当前关联的一部分。
谢谢
编辑 1 我应该根据 session[:user_id] 值创建一个 User 的实例还是直接将其推入?
【问题讨论】:
-
前段时间提出了类似的问题:stackoverflow.com/questions/2513383/…
-
感谢发布 - 我已经看到了。我实际上并不完全同意当前用户不应该出现在模型中的想法。当价值是逻辑的一部分时,似乎是一种铁路主义。如果逻辑类型在整个应用程序中的实现不一致(有时在控制器中,有时在模型中),我会更加担心,而不是在 100% 的情况下将其放入模型中。特别是在控制器默认不需要触摸模型的情况下。基于在 Rails 中经常发生这种情况的事实,这显然是一个设计目标。
标签: ruby-on-rails activerecord