gpt4 book ai didi

ruby-on-rails - Rails 2.X 和 Rails 3 的“范围”方法

转载 作者:行者123 更新时间:2023-12-04 23:09:48 27 4
gpt4 key购买 nike

我有一个插件用于使用 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 中,您似乎不需要将任何参数传递给 scoped反正。

关于ruby-on-rails - Rails 2.X 和 Rails 3 的“范围”方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com