Ruby on rails 限制相关模型中用户的访问';s控制器

Ruby on rails 限制相关模型中用户的访问';s控制器,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个控制器,我在那里做一些时髦的选择。我有一个邀请表,它属于某个用户,并且只有一个用户 销毁邀请时,我希望“has_one User”正在进行销毁,在我的控制器中,我首先收到邀请用户的邀请数组: def destroy @invitations = Invitation.find_by_recipient_email(current_user.email) 从这个@investments数组中,我想使用:id参数进行查找。有没有办法做到这一点: @invitations = Inv

我有一个控制器,我在那里做一些时髦的选择。我有一个邀请表,它属于某个用户,并且只有一个用户

销毁邀请时,我希望“has_one User”正在进行销毁,在我的控制器中,我首先收到邀请用户的邀请数组:

def destroy
    @invitations = Invitation.find_by_recipient_email(current_user.email)
从这个@investments数组中,我想使用:id参数进行查找。有没有办法做到这一点:

@invitations = Invitation.find_by_recipient_email(current_user.email)
    @invitation = @invitations.find(params[:id])
通过这种方式,我可以将用户只能访问的邀请限制为他们被邀请的邀请(使用当前的用户方法),然后选择特定的邀请。我当前无法执行此操作,因为“查找”在阵列上不起作用

谢谢你的帮助/指点

编辑:对不起,我让这篇文章有点混乱,这里有一些更多的信息:

这是我现在的全部销毁方法,我只想删除一条记录:

def destroy
    @invitations = Invitation.find_by_recipient_email(current_user.email)
    @invitation = @invitations.find(params[:id])  

    if @invitation.destroy
      redirect_to invitations_path, :notice => "Declined invitation"
    else
      redirect_to :back
    end
  end
我的邀请对象看起来像:

Invitation(id: integer, list_id: integer, sender_id: integer, recipient_email: string, created_at: datetime, updated_at: datetime) 
其中发送id和收件人电子邮件是两个不同的用户

我的邀请.rb:

belongs_to :sender, :class_name => 'User'
  has_one :recipient, :class_name => 'User'

可能问题是我会调用类似于当前用户的东西。investments.find(params[:id])并重做我的邀请模型?

find
是一种ActiveRecord方法。您可以使用Ruby enumerable方法
select
返回匹配元素的数组,然后从数组中取出邀请

inv = @invitations.select { |i| i.id == params[:id] }
@inviation = inv.empty? ? nil : inv[0]

find
是一种ActiveRecord方法。您可以使用Ruby enumerable方法
select
返回匹配元素的数组,然后从数组中取出邀请

inv = @invitations.select { |i| i.id == params[:id] }
@inviation = inv.empty? ? nil : inv[0]
您可以这样做:您可以这样做:
invitatation_scope = Invitation.where(["recipient_email = ?",current_user.email])
@invitation =  invitation_scope.find(params[:id])