我是 Rails 新手,写了一个方法to_csv
,我把它放在 products_controller.rb 中,但我希望它也可用于所有其他控制器。这样做的首选方法是什么?它在 application.rb 中吗?
同样,如果我在某个 model.rb 中编写方法,如何在所有模型之间共享该方法?
我是 Rails 新手,写了一个方法to_csv
,我把它放在 products_controller.rb 中,但我希望它也可用于所有其他控制器。这样做的首选方法是什么?它在 application.rb 中吗?
同样,如果我在某个 model.rb 中编写方法,如何在所有模型之间共享该方法?
application_controller 将是这个地方。如果是模型,也许你可以写在一个模块中,然后包含在你想要使用的模型中。
您还可以创建一个单独的模型,而无需在该特定模型中继承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)创建master类,用于所有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