ruby-on-rails - 在每个 Rails 模型中调用方法的 DRY 方式

标签 ruby-on-rails

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/

相关文章:

ruby-on-rails - 在 Sidekiq 作业结束前释放 ActiveRecord 连接

ruby-on-rails - 如何从country_select gem中将国家列表提取到数组中

ruby-on-rails - 如何在 ActiveJob 作业中使用 url_for/polymorphic_url?

ruby-on-rails - Rails - 构建一个使用 <WBR> 打破长单词/URL 的助手

ruby-on-rails - 应该::匹配器::独立::DelegateMethodMatcher:未定义的方法 `allow_nil'

javascript - jsplumb 禁用添加类

ruby-on-rails - 如何使用 Passenger 配置 Nginx 以处理 500 个请求/秒

ruby-on-rails - Rails 设计验证 IP 地址

ruby-on-rails - Rails "please wait"页面

ruby-on-rails - 设计:不需要电子邮件