簡體   English   中英

Rails 2.X ad Rails 3的“范圍”方法

[英]'scoped' method for Rails 2.X ad Rails 3

我有一個插件,我用於使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM