我有2个ActiveRecord关系
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
我想在activerecord查询中找到特定国家/地区的代理(容量小于其配置),然后通过配置计数器对其进行排序。
我的意思是我正在尝试做类似的事情(伪activrecord示例)
class Proxy
# capacity integer
# country string
has_many :configs
end
class Config
belongs_to :proxy
# proxy_id
# port integer
end
我想也许我纠结了我的问题,并且它有一个简单的解决方案。
谢谢!
答案 0 :(得分:1)
这是standard SELECT ... JOIN ... GROUP BY ... HAVING ... ORDER
SQL任务:
Proxy.
joins(:configs).
group(:id).
having('proxies.capacity > count(configs.id)').
order('count(configs.id)')
答案 1 :(得分:1)
尝试在关联中使用:counter_cache
class Proxy
# configs_count integer
has_many :configs
end
class Config
belongs_to :proxy, counter_cache: true
end
然后您可以执行以下操作:
Proxy.where(country: country)
.where("capacity > ?", :configs_count)
.order_by(:configs_count)