ruby-on-rails – Rails 2.X ad Rails 3的“范围”方法
发布时间:2020-12-17 03:44:11 所属栏目:百科 来源:网络整理
导读:我有一个插件,我用于使用Rails 2.X或Rails 3的网站. 在Rails 2.3中,我对复杂查询使用了很多“范围”方法: p = Person.scoped({})p = p.activep = p.with_premium_plan if xyzpetc. 但我看到它在Rails 3中发生了变化: p = Person.scopedetc. 所以我必须在我
我有一个插件,我用于使用Rails 2.X或Rails 3的网站.
在Rails 2.3中,我对复杂查询使用了很多“范围”方法: p = Person.scoped({}) p = p.active p = p.with_premium_plan if xyz p etc. 但我看到它在Rails 3中发生了变化: p = Person.scoped etc. 所以我必须在我的插件中执行类似的操作(能够在两个版本的Rails中运行它),或者你能提出更好的建议吗? if Rails.version.split(".")[0] == "3" p = Person.scoped else p = Person.scoped({}) end 谢谢! 解决方法
我真的远离检查Rails的文字版本.当Rails 4出现时,你只是为自己做好准备.
如果您对方法是否带参数感到好奇,请使用: p = (Person.method(:scoped).arity == 1) ? Person.scoped({ }) : Person.scoped 类或模块上的arity方法返回所需参数的数量,如果它是一个有点任意的数字,则返回负值,如某些是可选的. 话虽如此,在Rails 2.3.8中,似乎你不需要将任何参数传递给作用域. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |