我的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?我该如何写出正确的查询?
答案 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_date
和to_date
必须为Date
个对象
例如:from_date = "1-3-2017".to_date