我有两张桌子
table 1: has_many table2
table1 fields are id,name,amount, contract_id
table 2: belongs to table1
table2 fields are id,name,table1_id
让我们举个例子 表1一条记录在表2中有3条记录 Table1.where(contract_id:2).table2.counts = 3
Table1.where(contract_id: 2) = id:2, name: "abc", amount= 100, contract_id: 2
Table1.where(contract_id: 2).table2 = id:1, name: "abc1", table1_id: 2
id:2, name: "abc2", table1_id: 2
id:3, name: "abc3", table1_id: 2
当我尝试使用连接进行分组时,会产生问题
Table1.joins(:table2).where(contract_id: 2).group(:name).sum(:amount)
I want result here ["abc", 100]
But its give me ["abc", 300]
提前致谢
答案 0 :(得分:0)
我假设标准的Rails约定在Table1.table_name
是table1s
(复数)。如果您以不同方式进行设置,则需要修改此答案。
group
:name
"table1s.name"
。 Rails假定您的意思是table2s.name
,因为这是生成查询的模型。您是否尝试按Table1.joins(:table2).where(id: 2).group("table2s.name").sum(:amount)
进行分组?如果是这样,你必须明确指定:
where(id: 2)
同样,table1
是指proguard-rules.pro
,但我认为在这种情况下,这就是你的意思,对吗?
答案 1 :(得分:-1)
这是一种错误的方法:如果你只想获取table_id:2
,请尝试这样做Table1.joins(:table2).where(table2: {table1_id: 2}).group(:name).sum(:amount)