Ruby on rails helper方法来检查记录是否由rails中的当前用户拥有
我正在构建一个rails 3应用程序,我正在使用Desive来管理身份验证逻辑,但我想知道是否有一个助手方法来检查当前用户是否拥有一个对象(数据库中的记录),该对象具有关联“has_many” 例如:Ruby on rails helper方法来检查记录是否由rails中的当前用户拥有,ruby-on-rails,ruby-on-rails-3,authentication,view-helpers,Ruby On Rails,Ruby On Rails 3,Authentication,View Helpers,我正在构建一个rails 3应用程序,我正在使用Desive来管理身份验证逻辑,但我想知道是否有一个助手方法来检查当前用户是否拥有一个对象(数据库中的记录),该对象具有关联“has_many” 例如: User has_many :reports 我有这样的情况: <%= current_user.id == report.user.id ? "Personal Report" : report.user.username %> 可以创建如下内容: <%= own
User
has_many :reports
我有这样的情况:
<%= current_user.id == report.user.id ? "Personal Report" : report.user.username %>
可以创建如下内容:
<%= owned ? "yes" : "no" %>
谢谢您的帮助:
def owned(report)
current_user.id == report.user_id
end
用法:
<%= owned(report) ? "yes" : "no" %>
您可以在
报告中定义此方法
模型:
型号限制:
如果
当前用户
是所有者,则此帮助程序将返回true
,如果当前用户为nil
或者对象没有user\u id
属性,则为false,如果当前用户为nil
或者对象没有user\u id
属性,则为nil
则为false。它无法工作,因为助手无法在视图之外知道报表模型的关联方法,并且我不想传递report.user.user.user\u id like参数。每次我都用自己的helper@davelabHelper方法被视为在视图中声明的方法。因此,他们可以访问传递的对象。@davelab如果您可以访问视图中的报告,您可以使用此帮助器方法小字体:您在方法定义和解释中使用了owner\u by
。我试图自己修复它,但编辑必须更改至少6个字符。谢谢@ChrisFletcher,我修复了它!我想为每个与用户有关联的模型提供一个通用方法。@Yoshiji先生在通用方法方面做得很好,非常好!!:)
class Report < ActiveRecord::Base
def owned_by?(user)
self.user_id == (user.try(:id) || user)
end
<%= report.owned_by?(current_user) ? 'yes' : 'no' %>
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