2011-01-26 9 views
1

私は私の本モデルでは、この方法を持っていますが、今私は、同様のカテゴリーモデルでこれを必要と実現:これを抽出して、アプリの他の部分で再利用できるようにするにはどうすればよいですか?

def proper_user?(logged_in_user) 
    return false unless logged_in_user.is_a? User 
    user == logged_in_user 
end 

私は今、この方法は、本モデルとカテゴリのモデルで重複しています。カテゴリと本の両方にはbelongs_to:userがあり、両方とも表のuser_id:integerも持ちます。私は単にどこかでこれを抜き出して、乾燥ができるようにしたいと思っています。

私はapplication_controller.rbにメソッドを入れようとしましたが、未定義のメソッド `proper_user? 'と言います。 #

おかげ

ジェフ

答えて

1

私はあなたがこのように、このメソッドを呼び出すことができるようにしたいと思う:それはユーザーではなく、各モデルでそれを定義するのが最良に働くだろうだから

book.proper_user?(current_user)

。これが最善の方法とモジュール内で混合することによって行われます。

module UserMethods 
    def proper_user?(logged_in_user) 
    # ... etc ... 
    end 
end 

および各モデルでそれを含む:

class Book < AR::Base 
    include UserMethods 

class Category < AR::Base 
    include UserMethods 

モジュールは設定/初期化子でソースファイルに行くことができる、またはあなたができますconfig/environment.rbのconfig.autoload_pathsを場所を指すように変更してください。

+0

モジュールをlibに入れることをおすすめします。イニシャライザは設定コードの場所としては最適ですが、独自のライブラリではlibが最適です。 –

0

それはUserモデルに関連しているのでために、なぜそこに入れていませんか?

関連する問題