如何将以下Active Record查询转换为原始postgresql?将ActiveRecord语句转换为postgresql查询 - Rails 4/postgresql 9.4
我只想行转换与 '@available_deal =应对那里......'
应用程序/控制器/ deals_controller.rb
def show_deals_available
@deal = Deal.friendly.find params[:id] # no need to turn this into postgresql
@available_deal = Deal.where('deal_id = ? AND deal_status = ?',
@deal.id, "not_yet_taken").first
respond_to do |format|
format.js
end
end
编辑感谢反馈
我去在我的本地控制台上,并复制/粘贴查询在我的文件中,并用我的变量(@ deal.id)替换数字
所以现在我有:
应用程序/控制器/ deals_controller.rb
def show_deals_available
@deal = Deal.friendly.find params[:id] # no need to turn this into postgresql
@available_deal = Deal.where('deal_id = ? AND deal_status = ?',
@deal.id, "not_yet_taken").first
@available_deal = SELECT "deals".* FROM "deals" WHERE (deal_id = @deal.id AND deal_status = 'not_yet_taken') ORDER BY "deals"."id" ASC LIMIT 1
respond_to do |format|
format.js
end
end
但我得到一个错误:
SyntaxError - syntax error, unexpected tCONSTANT, expecting keyword_end
...ROM "deals" WHERE (deal_id = @deal.id AND ...
... ^
/deals_controller.rb:70: syntax error, unexpected tCONSTANT, expecting ')'
..." WHERE (deal_id = @deal.id AND deal_status = ...
... ^
....
是的,将一块SQL粘贴到一堆Ruby代码中。没有什么可以出错,对吧? ;)你追求的最终目标是什么? –
了解更多sql并直接在我的控制器内移动到原始sql – Mathieu
我发现rails方法find_by_sql也许我可以试试这个,但它是像“真正的R Sql”还是它仍然是活动记录,这将比真正的原始SQL更少的脂肪。对不起菜鸟在这里。 – Mathieu