首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的资源控制器也按current_user进行过滤

嵌套的资源控制器也按current_user进行过滤
EN

Stack Overflow用户
提问于 2012-11-07 02:35:01
回答 1查看 187关注 0票数 0

多亏了另一个问题中的一些帮助,我现在有了一个嵌套的资源设置,并且它几乎按照我需要的方式工作。这是一个关于控制器的后续问题。

费用既有用户,也有他们所属的项目。

我希望访问/projects/5/ expenses,并查看该项目(正在运行)的所有费用列表,但也要使其对当前登录的用户敏感,因此他们只能看到自己的费用。

首先是模型:

代码语言:javascript
复制
class Expense < ActiveRecord::Base
  attr_accessible :amount, :project_id, :user_id

  belongs_to :project
  belongs_to :user

end

其他每个模型都有"has_many :expenses",以完成关系。

所以我的路线是这样的:

代码语言:javascript
复制
  resources :projects do
    resources :expenses
  end

代码语言:javascript
复制
class ExpensesController < ApplicationController

    def index
      @user = current_user  
      @project = Project.find(params[:project_id])
      @expense_list = @project.expenses.all  
end

如何通过只显示current_user的费用来进一步过滤我的@expense_list?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-07 02:47:42

您需要一个附加条件,才能根据费用所属的用户查询费用。我建议您在费用模型中创建一个作用域

代码语言:javascript
复制
scope :for_user, lambda{ |user| 
      where( :user_id => user.id )
   }

您可以在控制器中执行此操作:

代码语言:javascript
复制
@expense_list = @project.expenses.for_user(current_user).all  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13257174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档