我无法使用
访问另一个模块中的类实例变量集instance_variable_set("@#{key_name}", key_value)
如下例所示:
module Neo4jMapper
module Node
def self.included base
base.extend NodeClassMethods
base.send :prepend, NodeInstanceMethods
end
end
module NodeInstanceMethods
def initialize(prototype)
# Set neo4jId
@_id = prototype["self"].split('/').last.to_i
# Set properties
for key in self.class.keys
key_name = key[0]
if prototype["data"].has_key?(key_name)
key_value = prototype["data"][key_name]
instance_variable_set("@#{key_name}", key_value)
end
end
end
end
end
class Person
include Neo4jMapper::Node
#....
end
实例化:
person = Person.create({:name => "neo4j_mapper", :email => "test@test.com"})
这将使用@name =“test@test.com”设置person对象(从调试器中查看)。但是以下行不起作用:
email = person.email # ERROR: undefined method `email' for #<Person:0x007fd2038b8508>
有什么想法吗?
答案 0 :(得分:2)
您需要使用attr_accessor
生成一个getter和setter。
attr_accessor :email
<强>参考强>