gpt4 book ai didi

ruby-on-rails - 将 ActiveRecord 方法放入模块中的优点和缺点是什么?

转载 作者:行者123 更新时间:2023-12-04 06:59:40 25 4
gpt4 key购买 nike

创建模块有哪些优点和缺点,例如:

module Section
def self.included(base)
base.class_eval do
has_many :books
end
end

def ensure_books
return false if books <= 0
end
end

...在模块中使用 ActiveRecord 方法而不是直接在它们所属的类上的位置?

模块应该用于这样的方法吗?

最佳答案

最明显的优势是您可以将共享的功能放在一个地方。这只是保持代码组织和模块化的一般优势(没有双关语)——当然,你应该这样做

使用 Active Record 方法不会使这些模块有任何特殊性。

最明显的缺点是您编写的代码有点复杂。您不能使用 validates_presence_of直接在一个模块中,因为它不继承自 ActiveRecord::Base . (Rails 3 应该是 make it easier to selectively extend your own classes/modules with bits of ActiveRecord-Functionality

相反,当您的模型包含在内时,您需要在模型类上调用 Active-Record-Methods:

module FooHelper
def self.included(other)
other.send(:has_many, :foos)
end
end

所以主要的缺点是你的代码变得有点难以阅读。

如果您只是将单个类分解为单独的部分并且不需要在其他地方重用代码,您可以使用 concerned_with -pattern通过重新开课来工作。

另一方面,如果您需要更多功能,例如扩展的配置参数,请考虑 writing a plugin

关于ruby-on-rails - 将 ActiveRecord 方法放入模块中的优点和缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078955/

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