2011-01-09 60 views
0

我已經將我的應用程序從rails 2.3.8升級到3.0.3。但是我面臨一個問題。我用的是「發現」,但壓倒一切的不導軌3工作:如何覆蓋'where'in rails 3

# override activerecord's find to allow us to find by name or id transparently 
    def self.find(*args) 
    if args.is_a?(Array) and args.first.is_a?(String) and (args.first.index(/[a-zA-Z\-_]+/) or args.first.to_i.eql?(0)) 
     find_by_login_slug(args) 
    else 
     super 
    end 
    end 

我不知道是否有一種方法,使在軌道3,甚至通過使用其中代替這項工作。

感謝

回答

-1

你所面臨的問題是從軌道2.3.x版本的軌道3.0.x的應用程序的升級。儘管這看起來不是一件簡單的事情,特別是如果你有真正的應用程序而不是玩具之一。我建議你看一看Rayn Bates的截屏視頻,你可以從http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1開始,瞭解你面臨的問題。

如果您只需要閱讀有關ActiveRecord新界面http://m.onkey.org/active-record-query-interface是一篇很棒的文章。

+0

你有沒有聽說過重寫? http://en.wikipedia.org/wiki/Method_overriding。我的問題不在於升級。我已經通過了它。我的問題是當我打電話User.find('任何名字')。它調用了我在rails 2中創建的重寫方法,但在rails 3中給我一個錯誤說:「找不到ID ='任何名稱的用戶'」。因爲它沒有看到壓倒一切的方法 – Zakwan 2011-01-09 12:25:58