在 Rails 控制器中,我使用对外部数据库的 JSON 请求来返回用于对记录集合进行排序的整数:
Model.order(JSON.parse(open("http://myapp.com/models/#{:id}")).read)['attribute'])
我想让这个动态来帮助在环境之间切换。就像是:
Model.order(JSON.parse(open(model_url(model))).read)['attribute'])
这是不正确的,并model_url(model)
返回错误:
undefined local variable or method 'model'
我如何在查询中引用自我?
一定有比这更优雅的解决方案
...JSON.parse(open("#{root_url}/models/{:id}"))....
编辑:
下面 Lightswitch05 的回答确实回答了我提出的问题。查询应该引用params[:id]
以获取当前记录的 url。
事实上,我已决定将此 JSON 调用移动到模型上的虚拟属性中。这意味着我可以简单地调用Model.order(:my_virtual_attribute)
. 虽然这个解决方案带来了自己的问题——我需要让 url_helpers 对模型可用——但从长远来看,我认为这将是一个更干净的解决方案。