gpt4 book ai didi

ruby-on-rails - Rails 和 ActiveRecord:将方法附加到从 ActiveRecord::Base 继承的模型

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:28 26 4
gpt4 key购买 nike

我有一个标准的 ActiveRecord 模型,包含以下内容:

class MyModel < ActiveRecord::Base
custom_method :first_field, :second_field
end

此时,那个 custom_method 被发送到 ActiveRecord::Base 的模块获取。该功能基本上有效,但当然,它附加到每个 模型类,而不仅仅是 MyModel。因此,如果我在同一操作中有 MyModel 和 MyOtherModel,它会假定 MyOtherModel 也有 custom_method :first_field, :second_field。

所以,我的问题是:如何将方法(例如:def custom_method(*args))附加到继承自 ActiveRecord::Base 的每个类,而不是通过将其附加到 ActiveRecord::基地本身?

任何想法表示赞赏。

===

编辑

custom_method 当前通过以下方式附加到 ActiveRecord::Base:

module MyCustomModule
def self.included(base)
base.extend(self)
end

def custom_method(*args)
# Zippity doo dah - code goes here
end
end

ActiveRecord::Base.send(:include, MyCustomModule)

最佳答案

你知道后代吗?

ActiveRecord::Base.descendants

你必须确保在调用它之前触摸模型。

在此处查看精彩讨论:

Is there a way to get a collection of all the Models in your Rails app?

我同意上面评论者的意见,您可能需要考虑将您的方法添加到元类、中间类或模块混入中。

关于ruby-on-rails - Rails 和 ActiveRecord:将方法附加到从 ActiveRecord::Base 继承的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com