我试图从数据库中返回最常见的文本值(国家/地区)。
虽然我的第一次尝试没有产生任何错误,但我怀疑它没有返回最常见的值:
@mostpopularroast = Roast.group(:id).order("count(country) DESC").first
有趣的是,如果我使用ASC,它会给我完全相同的结果。
因此我现在尝试使用此similar question:
的解决方案@mostpopularroast = Roast.group('country').order('count(*)').limit(1).pluck(:country).first
但这给了我错误undefined method 'country' for "Country 1":String
。 Country 1
是数据库中的值。
我的模特
class CreateRoasts < ActiveRecord::Migration[5.1]
def change
create_table :roasts do |t|
t.string :roaster
t.string :name
t.string :country
t.string :region
t.string :bestfor
t.string :beans
t.string :roast
t.string :slug
t.timestamps
end
end
end
答案 0 :(得分:1)
您应该应用降序排序来获得最受欢迎的#include <iostream>
template<typename T>
T adder(T first) {
return first;
}
template<typename T, typename... Args>
T adder(T first, Args... args) {
return first + adder(args...);
}
int main() {
const int c = adder(1, 8, 4);
std::cout << c << '\n';
return 0;
}
:
country
您的初始错误与此无关,只是您正在使用Roast.group(:country).select(:country).order("count(*) desc").first.country
,它返回pluck
个对象,然后您在其上调用Array
方法并获取{{ 1}} object,它是已经是最受欢迎的烤国名称的对象,但是你试图在其上调用first
,这会导致异常。