Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们知道Rails 5将ApplicationRecord作为一个抽象类,它被继承自我们的模型(ActiveRecord).

但是基本上我认为我们使用ApplicationRecord所做的每一个技术要求,我们也可以使用ActiveRecord :: Base.例如:

@H_271_4@module MyFeatures def do_something puts "Doing something" end end class ApplicationRecord < ActiveRecord::Base include MyFeatures self.abstract_class = true end

所以现在每个模型都会附加到MyFeatures的行为.但是我们也可以在Rails 4中实现这一点:

ActiveRecord::Base.include(MyFeatures)

那么使用ApplicationRecord有什么好处,你认为有必要添加ApplicationRecord吗?

解决方法

然在基本的Rails应用程序中看起来可能相同,但是从ActiveRecord :: Base开始使用Rails引擎,插件/ gem或直接方法之后,实际上有一个重要的区别.

> ActiveRecord :: Base.include(MyFeatures)将功能直接混合到ActiveRecord :: Base中,它永远存在于ActiveRecord :: Base的所有后续应用中(它不能是“未混合”),并且没有办法获取原来的ActiveRecord :: Base后面的任何代码都包含在内.如果某些混合功能更改了默认的ActiveRecord行为,或者例如,两个引擎/宝石试图包含相同的方法.
>另一方面,ApplicationRecord方法使特征仅存在于继承自它的类(模型),其他类,以及直接使用ActiveRecord :: Base保持原始状态,由模块功能整合.

当使用引擎或导轨插件时,这是特别重要的,因为它允许他们将自己的模型逻辑与ApplicationRecord之间无法使用的主应用程序的模型逻辑分开.

所有这一切在this blog postthis github comment也很好描述.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?全部内容,希望文章能够帮你解决ruby-on-rails – 为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。