0

私は Rails を初めてto_csv使用し、products_controller.rb に記述したメソッドを作成しましたが、他のすべてのコントローラーでも使用できるようにしたいと考えています。それを行うための好ましい方法は何ですか?それはapplication.rbにありますか?

同様に、model.rb にメソッドを書いている場合、そのメソッドをすべてのモデル間で共有するにはどうすればよいでしょうか?

4

3 に答える 3

6

application_controllerがその場所になります。モデルの場合は、モジュールに書き込んでから、使用するモデルに含めることができます。

于 2013-03-09T06:27:42.727 に答える
0

また、特定のモデルからcsvメソッドを継承せずに別のモデルを作成し、ActiveRecord::Baseそのモデルでcsvメソッドを定義することもできます。そして、どのコントローラーからでも電話するだけです

model_name.method_name(parameters)

たとえば、モデルCsvDBでは次のようになります。

class CsvDB
  def export(parameters)  
    # your csv logic goes here  
  end
end

どのコントローラーからでも電話するだけです

CsvDB.export(parameters)
于 2013-03-09T10:56:25.883 に答える
0

1) ActiveRecord::Base のモンキーパッチを試してください。初期化ディレクトリは、これらすべての小さなタスクを収集するのに最適な場所です

/config/initializers/active_record_extension.rb を試してみてください。

class ActiveRecord::Base
   def self.export(parameters)
     #your csv logic goes here
   end
end

また

2) すべての active_record モデルで継承するために使用されるマスター クラスを作成します。

たとえば、/models/your_class.rb

class YourClass < ActiveRecord::Base
  def self.export(parameters)
     #your csv logic goes here
  end
end

class CsvDB < YourClass
end
于 2013-03-29T07:03:20.367 に答える