我有一个名为banner的表,其列号为id(bigint),单击(bigint)和user_id(bigint)
在我使用以下请求时,在控制台中,甚至是控制器:
Banner.select("sum(click) as clicks").where(user_id: 5)
我明白了:
=> #<ActiveRecord::Relation [#<Banner id: nil>]>
我在phppgadmin SQL中复制了相同的结果请求:
SELECT sum(click) as clicks FROM "banners" WHERE "banners"."user_id" = 5
并且它有效,但有活动记录它不会!!?
Rails版本:5.1.4
更新
我尝试了Banner.select("sum(id)")
,它给了我=> #<ActiveRecord::Relation [#<Banner id: nil>]>
使用用户表:User.select("sum(id)")
,它会:=> #<ActiveRecord::Relation [#<User id: nil, sum: 0.1e1>]>
它很奇怪,因为它适用于一个表而不是其他表...我甚至切换到另一个项目并尝试了不同的表,我得到了同样的行为。
答案 0 :(得分:0)
尝试在id上添加group子句。
Banner.select("sum(click) as clicks").where(user_id: 5).group(:id)
它会返回ActiveRecord::Relation [#<Banner id: nil>, #<Banner id: nil>
,现在当你打电话给.first.clicks
时,会给你想要的输出(点击总和)。如果你想要id,那么你必须在select子句中指定id。
答案 1 :(得分:0)
如果
$(document).ready(function() {
value = 1;
$('#radio').click(function() {
if($('#radio2').is(':checked'))
{
valuePicker("#valuePicker", 5); //this line is added
}
else
{
valuePicker("#valuePicker", 1); //this line is added
};
});
valuePicker("#valuePicker", value);
});
banners = Banner.select("sum(click) as clicks").where(user_id: 5)
将banners.class
,要获取Banner:ActiveRecord_Relation
,您必须使用clicks
或.first
(因为它只有一个元素) ),如下所示
.last
您可以使用
进行验证banners.last.clicks