感谢另一个问题的一些帮助,我现在有一个嵌套的资源设置,它几乎按照我需要的方式工作。这是关于控制器的后续问题。
费用包括用户和他们所属的项目。
我想访问/ projects / 5 / expenses,并查看该项目的所有费用列表(其中有效),但也对当前登录的用户敏感,因此它们只是看看自己的开支。
首先是模特:
class Expense < ActiveRecord::Base
attr_accessible :amount, :project_id, :user_id
belongs_to :project
belongs_to :user
end
其他每个模型都有“has_many:expenses”,以完成关系。
所以我的路线如下:
resources :projects do
resources :expenses
end
和
class ExpensesController < ApplicationController
def index
@user = current_user
@project = Project.find(params[:project_id])
@expense_list = @project.expenses.all
end
如何通过仅显示current_user的费用来进一步过滤我的@expense_list?
答案 0 :(得分:2)
您需要一个附加条件来根据用户所属的用户查询费用。 我建议你在费用模型中创建一个范围
scope :for_user, lambda{ |user|
where( :user_id => user.id )
}
你可以在控制器中执行此操作:
@expense_list = @project.expenses.for_user(current_user).all