私は Rails を初めてto_csv
使用し、products_controller.rb に記述したメソッドを作成しましたが、他のすべてのコントローラーでも使用できるようにしたいと考えています。それを行うための好ましい方法は何ですか?それはapplication.rbにありますか?
同様に、model.rb にメソッドを書いている場合、そのメソッドをすべてのモデル間で共有するにはどうすればよいでしょうか?
私は Rails を初めてto_csv
使用し、products_controller.rb に記述したメソッドを作成しましたが、他のすべてのコントローラーでも使用できるようにしたいと考えています。それを行うための好ましい方法は何ですか?それはapplication.rbにありますか?
同様に、model.rb にメソッドを書いている場合、そのメソッドをすべてのモデル間で共有するにはどうすればよいでしょうか?
application_controllerがその場所になります。モデルの場合は、モジュールに書き込んでから、使用するモデルに含めることができます。
また、特定のモデルから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)
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