Ruby on rails 如何使方法对所有控制器可用?如何使用所有型号?

Ruby on rails 如何使方法对所有控制器可用?如何使用所有型号?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Rails的新手,我已经在products\u controller.rb中编写了一个方法到_csv,但我希望它也能用于所有其他控制器。最好的方法是什么?它在application.rb中吗 类似地,如果我正在某个model.rb中编写一个方法,那么如何在所有模型之间共享该方法?应用程序\u控制器将是最佳选择。如果是模型,也许你可以写一个模块,然后 在模型中包含要使用的 应用程序\u控制器将是该位置。如果是模型,也许你可以写一个模块,然后 在模型中包含要使用的 您还可以创建一个单独的模型,而

我是Rails的新手,我已经在products\u controller.rb中编写了一个方法
到_csv
,但我希望它也能用于所有其他控制器。最好的方法是什么?它在application.rb中吗


类似地,如果我正在某个model.rb中编写一个方法,那么如何在所有模型之间共享该方法?

应用程序\u控制器将是最佳选择。如果是模型,也许你可以写一个模块,然后
在模型中包含要使用的

应用程序\u控制器将是该位置。如果是模型,也许你可以写一个模块,然后
在模型中包含要使用的

您还可以创建一个单独的模型,而无需继承
ActiveRecord::Base
,并在该特定模型中定义csv方法。从任何控制器只要呼叫

model_name.method_name(parameters)
例如,在CsvDB模型中:

class CsvDB
  def export(parameters)  
    # your csv logic goes here  
  end
end
从任何控制器只要呼叫

CsvDB.export(parameters)

您还可以创建一个单独的模型,而无需继承
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 monkeypatching。 初始化器目录是收集所有这些小任务的最佳位置

因此,请尝试/config/initializers/active_record_extension.rb

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

2) 创建主类,用于由所有活动记录模型继承

例如/models/your_class.rb

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

class CsvDB < YourClass
end
classyourclass
1)尝试ActiveRecord::Base monkeypatching。 初始化器目录是收集所有这些小任务的最佳位置

因此,请尝试/config/initializers/active_record_extension.rb

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

2) 创建主类,用于由所有活动记录模型继承

例如/models/your_class.rb

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

class CsvDB < YourClass
end
classyourclass
@misha是的,很好。但如果我们使用monkeypatch,则无需手动将模块包括/扩展到所有应用程序models@Mischa是的,很好。但如果我们使用monkeypatch,则无需手动将模块包括/扩展到所有型号