查询模型关联

时间:2017-06-13 16:00:06

标签: ruby-on-rails

我的Rails应用程序有两个模型:成本和帐户。 我的成本模型有一个金额列和对帐户模型(account_id)的引用 现在我想查询查找特定帐户的总金额。像这样:

Cost.where(account_id: 1).sum(:amount)

它给了我确切的结果。如何使用帐户名称属性而不是帐户ID属性更改查询,以获得类似的表达式:

Cost.where(account_name: "salaries").sum(:amount)

通过这种方式,我不必查找account_id。当然,我的Cost模型没有任何account_name属性,只有一个account_id引用。有没有办法从account_id推断出account_name?我该如何写出正确的查询?

1 个答案:

答案 0 :(得分:1)

您需要使用joins

Cost.joins(:account).where(accounts: { name: "salaries" }).sum(:amount)

注意:在此查询中,我假设帐户模型的表名称为accounts

修改

使用日期范围查询

    Cost
      .joins(:account)
      .where(accounts: { name: "salaries" })
      .where('created_at >= ? AND created_at <= ?', from_date, to_date) 
      .sum(:amount)

注意: from_dateto_date必须为Date个对象

例如:from_date = "1-3-2017".to_date