我在回形针中见过GEM has_attached_file :avatar.

我如何才能为模型创建这样的方法?

我的目标是,每当我定义像custom_method :attribute这样的属性时,我就可以在活动记录回调上运行一些活动操作,如保存和删除.

推荐答案

它只是一个类方法.

def self.custom_method(attribute)
  before_save do
    do_stuff_with(attribute)
  end

  define_method "do_stuff_with_#{attribute}" do
    do_stuff_with(attribute)
  end

  do_other_stuff
end

您可以将它添加到您的ApplicationRecord中,以便在任何地方都可以使用它,或者将它添加到Concern/Mixin/Module中,当您想要使用它时可以将其包括在内.

Ruby-on-rails相关问答推荐

Heroku、Selenium、Chome和Chromedriver的复杂问题(抱歉,无法简单描述,请阅读详细信息)

使用带有 Paper Trail gem 的子类

Ruby Hash 中 tap / delete 和 except 的区别

复制我的活动时,活动描述没有复制过来

如何避免 activesupport 中的循环参数引用警告

Rails ActiveRecord 中的更新插入

有没有一种简单的方法可以让 pow 为 https 服务?

运行多个 Rails Server 实例

如何在 Rails 上生成 AuthenticityToken

simple_forms 自定义数据属性

Ruby 元素是否存在于数组中

Rails - 从日期和时间戳获取日期

Rails:仅当值存在时如何验证格式?

Rails 5:无法从参数中检索哈希值

Rails Devise:设置密码重置令牌并重定向用户

我是否必须手动卸载所有依赖的 gem?

在任何来源中都找不到 thread_safe-0.3.0

Ruby 更新后:测试失败,assets资源 未声明为在生产中预编译

如何在不触及 updated_at 属性的情况下更新单个属性?

我什么时候需要在 Rails 中重新启动服务器?