Cor*_*aan 5 ruby activerecord ruby-on-rails
我正在学习ActiveRecord.我可以构建此查询吗?
@sales_by_product = ActiveRecord::Base.connection.execute("SELECT
it.name,
it.id,
it.seller_id,
pur.volume,
pur.sales
FROM items it
INNER JOIN (SELECT
item_id,
COUNT(*) AS volume,
SUM(price) AS sales,
workflow_state AS state
FROM purchases
WHERE workflow_state = 'payment_successful'
GROUP BY item_id,
workflow_state) pur
ON pur.item_id = it.id
WHERE it.seller_id = '" + current_user.id.to_s + "'")
Run Code Online (Sandbox Code Playgroud)
我想尽可能多地使用AR api,但我还没有使用AR来完成上述工作.
谢谢!
我认为使用 AR 进行此查询并不是一个好主意。起初看起来很有趣,但后来变得很烦人。而且,以后想改变也很难。
您可以创建自己的查询生成器:
def query_for current_user
<<-SQL
SELECT
it.name,
it.id,
it.seller_id,
pur.volume,
pur.sales
FROM items it
INNER JOIN (SELECT
item_id,
COUNT(*) AS volume,
SUM(price) AS sales,
workflow_state AS state
FROM purchases
WHERE workflow_state = 'payment_successful'
GROUP BY item_id,
workflow_state) pur
ON pur.item_id = it.id
WHERE it.seller_id = '" + current_user.id.to_s + "'")
SQL
end
@sales_by_product = ActiveRecord::Base.connection.execute( query_for( current_user ))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |