2012-01-06 93 views
1

我的應用程序具有可在多個操作發生後實現的點數/獎勵,這通常會在添加記錄時完成(完成任務等)Rails 3:可重用功能的最佳位置稱爲餘波

我寫了一個相當複雜的函數來審計所有的數據,並獎勵適當數量的點數,用戶排名等等。這需要在每個記錄被保存後調用。

我知道我可以使用Observers在一些模型保存後調用函數,但我不清楚put的所在函數以及如何調用它。

非常感謝提前!

回答

1

觀察員通常會進入app/models/。您可以使用命令rails generate observer YourModel自動爲模型生成觀察者類。這將生成文件「app/models/your_model_observer.rb」。

順便說一下,aftersave不是一個非常具有描述性的方法名稱。如果它做了很多事情最好還是把它分解成幾種方法各自的做一兩件事,並給每一個描述性的名稱,例如:

class YourModelObserver < ActiveRecord::Observer 
    def after_save your_model_instance 
    calculate_points your_model_instance 
    assign_awards your_model_instance 
    end 

    private 
    def calculate_points inst 
    # ... 
    end 

    def assign_awards inst 
    # ... 
    end 
end 
+0

[文檔(HTTP://api.rubyonrails .org/classes/ActiveRecord/Observer.html)描述瞭如何創建觀察多個模型的觀察者,或者您可以編寫一個單獨的類或模塊([通常](http://stackoverflow.com/questions/285148/where-應該在我的非模型非控制器代碼生活#285152)在'lib /')並將其包括在您的模型或觀察員。 – 2012-01-07 01:34:41