我无法使用来访问在另一个模块中设置的类实例变量
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 => "[email protected]"})
这会将个人对象设置为@name =“ [email protected]”(从调试器中查看)。但是以下行不起作用:
email = person.email # ERROR: undefined method `email' for #<Person:0x007fd2038b8508>
有任何想法吗?
您需要使用attr_accessor
生成一个getter和setter。
attr_accessor :email
参考
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句