0

Railsアプリを開発していますが、すべてのオブジェクトにそれらを処理する特定のメソッドを持たせたいと思っています。さて、各オブジェクトのモデルでそのメソッドを記述できることに気づきましたが、DRY(自分自身を繰り返さないでください)理論に固執し、メソッドを1か所に配置したいと思います。

すべてのオブジェクトがアクセスできるメソッドを配置できる場所はありますか?

4

2 に答える 2

3

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
于 2012-08-22T00:38:18.870 に答える
0

すべてのモデルに必要なコードを/libフォルダー内のモジュールに配置し、モデルに必要とします。

于 2012-08-22T00:26:16.723 に答える