Ruby on rails ActiveSupport中mattr_访问器和cattr_访问器之间的区别?

Ruby on rails ActiveSupport中mattr_访问器和cattr_访问器之间的区别?,ruby-on-rails,ruby,activesupport,Ruby On Rails,Ruby,Activesupport,通过查看源代码,我无法找出类和模块中分别提供的cattr.*和mattr.*方法之间的区别。我读了这个问题:它给出了这两种方法的一些细节,但没有突出区别 所以我的问题是它们之间的区别是什么?为什么我们需要这两套方法,而它们在源代码中实际上是相同的?此外,当?模块是类的超类时,我们应该使用哪一个?因此,如果可以考虑一个合适的通用名称,那么定义访问器的方法可以放在模块上,并且它可以用于模块和类。请注意,以下操作有效: class Bar mattr_accessor :test end 但是

通过查看源代码,我无法找出类和模块中分别提供的
cattr.*
mattr.*
方法之间的区别。我读了这个问题:它给出了这两种方法的一些细节,但没有突出区别


所以我的问题是它们之间的区别是什么?为什么我们需要这两套方法,而它们在源代码中实际上是相同的?此外,当?

模块
是类的超类时,我们应该使用哪一个?因此,如果可以考虑一个合适的通用名称,那么定义访问器的方法可以放在
模块
上,并且它可以用于模块和类。请注意,以下操作有效:

class Bar
  mattr_accessor :test
end
但是

不起作用


在类内部使用的方法上有一个c前缀,在模块内部使用的方法上有一个m前缀,这有助于使代码更加清晰。

那么它们在功能上完全相同吗?而且,这让我想知道为什么它们在Rails源代码中没有被干涸,因为方法体是相同的。。。
module Foo
  cattr_accessor :test
end