Question

Given is a User Model who has_many Projects.
each Projects belongs_to a User
joined by a Assigned_projects Model

each Project has_many Expenses which belongs to a Project and a User

User Model:

class User < ActiveRecord::Base
  has_many :assigned_projects
  has_many :projects, :through => :assigned_projects

  has_many :created_projects, :class_name => "Project", :foreign_key => :creator_id
end

Project Model:

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :assigned_projects
  has_many :users, :through => :assigned_projects
  belongs_to :creator, :class_name => "User", :foreign_key => :creator_id

  has_many :expenses
end

join Model:

class AssignedProject < ActiveRecord::Base
  attr_accessible :project_id, :user_id, :position, :project

  belongs_to :user,    class_name: "User"
  belongs_to :project, class_name: "Project"

  validates :user_id,    presence: true
  validates :project_id, presence: true
end

Expenses Model:

class Expense < ActiveRecord::Base
    belongs_to :project
    belongs_to :user
end

Sum all Expenses of a project is easy: @current_project.expenses.sum(:amount)

I want to list the sum of all Expenses each User added.
The Question is how to sum all Expenses for each user who is assigned to the Project.

I'am looking for something like: @current_user.@current_project.expenses.sum(:amount)

Was it helpful?

Solution

I assume you are trying to do the following. If not, please explain your question a bit more.

@current_project.expenses.where(user_id: @current_user.id).sum(:amount)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top