2010-09-15 71 views
1

我在我的模型中使用了這種方法(超過50行),我寧願不必滾動那麼多,也不會失去光標,因爲它佔用了太多空間。我想知道是否可以將它放在單獨的文件中,而不是將它包含在模型中。rails:在模型中收起長方法

謝謝!

回答

3

你可以把它放到一個模塊中,並將它包含到模型類中。例如:

app/models/my_long_method.rb 
    module MyLongMethod 
    def my_long_method 
     .... 
    end 
    end 

app/models/my_class.rb 
    class MyClass < ActiveRecord::Base 
    include MyLongMethod 
    end 

如果你的方法真的是那麼長,雖然你可能要考慮將它分解成更小的部分作爲模塊太方法。

module MyLongMethod 
    def my_long_method 
    first_part 
    second_part 
    end 

    private 

    def first_part 
    ... 
    end 

    def second_part 
    ... 
    end 
end 
+1

很好的答案。最後部分的相關鏈接:http://www.refactoring.com/catalog/extractMethod.html – troelskn 2010-09-15 08:24:03

+0

感謝Shadwell和Troeskn。最後一個問題是要清除一件事情:模塊.rb文件必須與包含它的模型位於相同的目錄中。 – 2010-09-15 09:00:23

+0

不,它不需要。它只需要在加載路徑中可用。如果你把它放在一個子目錄中,你需要把這個子目錄放在加載路徑上或者使用一個命名空間。例如。 '模塊SubDir :: MyLongMethod'。 – Shadwell 2010-09-15 09:07:27