0

別の質問の助けのおかげで、ネストされたリソースのセットアップができました。これは、必要な方法でほぼ機能しています。これは、コントローラーに関するフォローアップの質問です。

経費には、ユーザーと、経費が属するプロジェクトの両方があります。

/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 をさらにフィルタリングするにはどうすればよいですか?

4

1 に答える 1

2

経費が属するユーザーに基づいて経費をクエリするには、追加の条件が必要です。経費モデルにスコープを作成することをお勧めします

scope :for_user, lambda{ |user| 
      where( :user_id => user.id )
   }

そして、コントローラーでこれを行うことができます:

@expense_list = @project.expenses.for_user(current_user).all  
于 2012-11-06T18:47:41.873 に答える