与 this question 相同,我想在每个模型中调用 acts_as_reportable
,这样我就可以在我的开发环境中的控制台中执行一次性手动报告(带有生产数据的转储)。
最好的方法是什么?在每个模型中放置 acts_as_reportable if ENV['RAILS_ENV'] == "development"
变得很乏味,而且一点也不干燥。每个人都说猴子补丁是魔鬼,但 mixin 似乎有点过分了。
谢谢!
最佳答案
对我来说,最好的方法是将其添加到初始化程序中的 ActiveRecord::Base 中。我相信 acts_as_reportable 是幕后的混合。通过这样做,您将能够仅在开发环境中调用所有模型中的acts_as_reportable 附带的所有方法。
我将在 config/initializers
目录中、名为 model_mixin.rb
的文件或您希望的任何内容中进行操作。
class ActiveRecord::Base
acts_as_reportable if (ENV['RAILS_ENV'] == "development")
end
使用猴子补丁的说法是肮脏的取决于你自己以及代码的可读性,在我看来,使用你觉得舒服的东西。该功能是可以使用的,并且始终取决于用户。
关于ruby-on-rails - 在每个 Rails 模型中调用方法的 DRY 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808315/