我意识到这是一个有点初级的问题,但我遇到了一道似乎无法逾越的墙。我有一个 friend 帮我写了这段 Postgres 代码,现在我正试图将它转换成 ruby,老实说,我不确定如何去做。我似乎找不到任何关于如何正确排序请求的所有部分的文档。
Postgres:
SELECT
assets.id,
count(assets_users.asset_id) as the_count
FROM assets
LEFT OUTER JOIN assets_users ON assets.id = assets_users.asset_id
WHERE asset_profile_id = 7
GROUP BY assets.id
HAVING count(*) > 0
ORDER BY the_count;
ruby :
def order_assets
@order = Asset.select("assets.id").count("assets_users.asset_id").joins("LEFT OUTER JOIN assets_users ON assets.id = assets_users.asset_id").group("assets.id").having("count(*) > 0").order("assets_users.asset_id")
end
编辑:
新的 Ruby 代码:
def order_assets
@order = Asset.select("assets.id, count('assets_users.asset_id) as the_count")
.joins("LEFT OUTER JOIN assets_users ON assets.id = assets_users.asset_id")
.group("assets.id")
.having("count(*) > 0").order("the_count")
end
我希望所有黄色的 Assets 都在顶部,当有用户的 Assets 在下面填写时。
最佳答案
这是等效的代码:-
@order = Asset.select("assets.id, count(assets_users.asset_id) as the_count")
.joins("LEFT OUTER JOIN assets_users ON assets.id = assets_users.asset_id")
.where("asset_profile_id = ?", current_asset_profile_id)
.group("assets.id")
.having("count(*) > 0")
.order("the_count")
关于ruby-on-rails - RoR : PSQL to ruby - .加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26847143/