繁体   English   中英

传递named_scope作为参数

[英]passing named_scope as argument

我正在重用控制器方法,并且需要根据需要更改范围。

我已将作用域名称存储在会话中,并希望能够执行以下操作。

if params[:scope_name]
  session[:submission_scope_name] = params[:scope_name]
else
  session[:submission_scope_name] = "allSubs"
end


@search = Submission.session[:submission_scope_name].search do
          ...
end

上面的代码给我以下错误消息:

undefined method `session' for #<Class:0x00000002ad7df0>

有什么方法可以将named_scope作为参数传递?

从安全的角度来看,您可能不想这样做:恶意用户可能创建格式不正确的submit_scope,而您将直接发送给Submission

也就是说,您正在寻找send到这里的方法。 尝试以下方法:

Submission.send(session[:submission_scope_name].to_sym).search

send会尝试在该对象上调用一个名为传递的符号的方法。您可以在Ruby核心docs中阅读有关此符号的更多信息,但最终,这样做将使您可以将任何命名的范围发送给所需的Submission

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM