多亏了另一个问题中的一些帮助,我现在有了一个嵌套的资源设置,并且它几乎按照我需要的方式工作。这是一个关于控制器的后续问题。
费用既有用户,也有他们所属的项目。
我希望访问/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?
发布于 2012-11-07 02:47:42
您需要一个附加条件,才能根据费用所属的用户查询费用。我建议您在费用模型中创建一个作用域
scope :for_user, lambda{ |user|
where( :user_id => user.id )
}您可以在控制器中执行此操作:
@expense_list = @project.expenses.for_user(current_user).all https://stackoverflow.com/questions/13257174
复制相似问题