如何使用字符串调用名为范围的活动记录

2024-02-18

我确信我错过了对 call 的使用的理解,但我想我可以做这样的事情。

@case_studies = CaseStudy.call("some_named_scope")

Where "some_named_scope"也是一个命名范围CaseStudy。我需要使用 call 的原因是因为我命名的范围与控制器中的操作名称相同,所以我希望做这样的事情。

@case_studies = CaseStudy.call(params[:action])

EDIT

请原谅,我刚刚意识到我正在考虑发送方法,以及“调用”这个词是如何在我的脑海中浮现的。但@case_studies = CaseStudy.send(params[:action])正如我想象的那样。


虽然@kolrie有正确的答案,但一点也不安全。

应按如下方式将其列入白名单:

scope = ["first_scope", "second_scope", "default_scope"].include? params[:action] ? params[:scope] : "default_scope"
@case_studies = CaseStudy.send(scope)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用字符串调用名为范围的活动记录 的相关文章

随机推荐