Railsアプリを開発していますが、すべてのオブジェクトにそれらを処理する特定のメソッドを持たせたいと思っています。さて、各オブジェクトのモデルでそのメソッドを記述できることに気づきましたが、DRY(自分自身を繰り返さないでください)理論に固執し、メソッドを1か所に配置したいと思います。
すべてのオブジェクトがアクセスできるメソッドを配置できる場所はありますか?
Railsアプリを開発していますが、すべてのオブジェクトにそれらを処理する特定のメソッドを持たせたいと思っています。さて、各オブジェクトのモデルでそのメソッドを記述できることに気づきましたが、DRY(自分自身を繰り返さないでください)理論に固執し、メソッドを1か所に配置したいと思います。
すべてのオブジェクトがアクセスできるメソッドを配置できる場所はありますか?
Ruby と Rails は、メソッドにアクセスしたいオブジェクトに応じて、いくつかのオプションを提供します。
ChiuBaka の答えは 1 つのオプションですが、特に Rails には、より読みやすいオプションが多数用意されています。
コントローラー/ビューレベルで何かを探している場合。app/helpers/application_helper.rb
ファイルに配置するだけ です。アクセスを制限したい場合は、同じディレクトリにコントローラー固有のヘルパー ファイルを作成できます。
モデルを見るなら。から継承する基本モデルを作成し、activerecord::base
そこにメソッドを実装してから、モデルにそれを継承させることができます。
class MyBase < ActiveModel::Base
def myinstancemethod
end
def myclassmethod
end
end
それから
class MyModel < MyBase
end
その後、あなたはそのように呼び出すことができます
instance = MyModel.new
instance.myinstancemethod
また
MyModel.myclassmethod
すべてのモデルに必要なコードを/libフォルダー内のモジュールに配置し、モデルに必要とします。