Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails helper方法来检查记录是否由rails中的当前用户拥有_Ruby On Rails_Ruby On Rails 3_Authentication_View Helpers - Fatal编程技术网

Ruby on rails helper方法来检查记录是否由rails中的当前用户拥有

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

我正在构建一个rails 3应用程序,我正在使用Desive来管理身份验证逻辑,但我想知道是否有一个助手方法来检查当前用户是否拥有一个对象(数据库中的记录),该对象具有关联“has_many”

例如:

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