无法访问在另一个模块中设置的类实例变量

Chiomelo

我无法使用来访问在另一个模块中设置的类实例变量

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过在Javascript另一个类的实例访问另一个类中的方法

Intellij无法从另一个模块中的一个模块访问类

从Java中的另一个类访问变量

Node.js无法访问另一个JavaScript文件中的变量

在一个类中设置变量并将值返回给另一个类

我无法访问Java中另一个类的变量值

在另一个类中调用实例变量

无法从另一个实例变量的定义访问实例变量super

无法从Visual Studio C ++中的另一个类访问一个类

从另一个类(在另一个模块中)调用自变量

无法访问另一个QML的属性

无法访问Requirejs模块中的另一个类

重新启动后无法访问另一个类中的SharedPreferences值

在Python中从一个类到另一个类访问变量

如何从另一个类调用对象-无法访问

快速访问另一个类中的变量

无法访问Java中另一个类中方法的返回实例

无法从Java中的另一个类访问变量?

从Java中的另一个类访问变量

Emacs Lisp。一个函数无法访问另一个函数中的变量

Mule-无法访问另一个流中的会话变量值

Swift 3 - 从另一个类中的 XIB 实例访问变量

从另一个类访问变量的实例

Java - 无法访问另一个类中的数组列表

另一个类“cBeam”的实例字典作为类“cNode”实例中的变量

Python 实例变量包含另一个类的实例,但为什么我不能访问该变量的实例变量

如何从另一个类中的另一个函数访问新的实例化类方法?

在python中访问另一个模块中模块的函数的局部变量

如何从另一个模块(python)中的模块访问类变量?