Dav*_*ani 2 authentication ruby-on-rails view-helpers ruby-on-rails-3
我正在建立一个rails 3应用程序,我正在使用设计来管理auth逻辑,但我想知道是否有一个帮助方法来检查当前用户是否拥有一个具有关联的对象(一个记录到db)"has_many ".
例:
User
has_many :reports
Run Code Online (Sandbox Code Playgroud)
我有这种情况:
<%= current_user.id == report.user.id ? "Personal Report" : report.user.username %>
Run Code Online (Sandbox Code Playgroud)
可以创建类似的东西:
<%= owned ? "yes" : "no" %>
Run Code Online (Sandbox Code Playgroud)
谢谢
Rah*_*arg 12
帮手:
def owned(report)
current_user.id == report.user_id
end
Run Code Online (Sandbox Code Playgroud)
用法:
<%= owned(report) ? "yes" : "no" %>
Run Code Online (Sandbox Code Playgroud)
您可以在Report模型中定义此方法:
class Report < ActiveRecord::Base
def owned_by?(user)
self.user_id == (user.try(:id) || user)
end
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
<%= report.owned_by?(current_user) ? 'yes' : 'no' %>
Run Code Online (Sandbox Code Playgroud)
此owned_by?(user)方法接受User对象和Integer(user_id).
辅助方法可以解决这个问题:
module OwnerHelper
def is_owner?(object)
return nil if(current_user.nil? || !object.respond_to(:user_id))
current_user.try(:id) == object.try(:user_id)
end
end
Run Code Online (Sandbox Code Playgroud)
true如果current_user是owner,则返回此帮助程序,如果不是则返回false,nil如果current_user是nilOR,则该对象没有user_id属性.