我有一个类(ActorClue),其中定义了三个attr_accessor.其他类还需要一些其他常见字段,因此我将这些常用字段放在一个模块中(BaseClueProperties).我在我的ActorClue类中包含该模块.
这是代码示例:
module BaseClueProperties
attr_accessor :image_url
attr_accessor :summary_text
end
################
class BaseClue
# http://stackoverflow.com/questions/2487333/fastest-one-liner-way-to-list-attr-accessors in-ruby
def self.attr_accessor(*vars)
@attributes ||= []
@attributes.concat vars
super(*vars)
end
def self.attributes
@attributes
end
def attributes
self.class.attributes
end
end
###############
class ActorClue < BaseClue
attr_accessor :actor_name
attr_accessor :movie_name
attr_accessor :directed_by
include BaseClueProperties
.....
end
Run Code Online (Sandbox Code Playgroud)
我用以下内容实例化上述内容:
>> gg = ActorClue.new
=> #<ActorClue:0x23bf784>
>> gg.attributes
=> [:actor_name, :movie_name, :directed_by]
Run Code Online (Sandbox Code Playgroud)
为什么它只返回:actor_name,:movie_name和:directed_by而不包括:image_url和:summary_text?
我修改了BaseClueProperties以阅读以下内容:
module BaseClueProperties
BaseClue.attr_accessor :image_url
BaseClue.attr_accessor :summary_text
end
Run Code Online (Sandbox Code Playgroud)
但仍然有相同的结果.
有关为什么my:image_url和:summary_text属性没有添加到我的@attributes集合的任何想法?