我有一个ActiveRecord类 - 让我们调用它的评论 - 它有一个作者属性。有没有办法使用符号访问Active Record属性?
在我的代码中,我已经将注释和符号的实例传递给了辅助方法。我现在发现自己想要访问作者的属性,并想知道是否有一种方法来处理我的问题。
我可以使用comment.read_attribute :author
但我不能使用comment.write_attribute:author,因为它是一个私有方法。
我怀疑我错过了一些很明显的东西。有任何想法吗?
我有一个ActiveRecord类 - 让我们调用它的评论 - 它有一个作者属性。有没有办法使用符号访问Active Record属性?
在我的代码中,我已经将注释和符号的实例传递给了辅助方法。我现在发现自己想要访问作者的属性,并想知道是否有一种方法来处理我的问题。
我可以使用comment.read_attribute :author
但我不能使用comment.write_attribute:author,因为它是一个私有方法。
我怀疑我错过了一些很明显的东西。有任何想法吗?
您可以使用instance_eval
irb(main):006:0> class MyClass
irb(main):007:1> attr_accesor :length
irb(main):008:1> end
irb(main):012:0> c = MyClass.new
=> #<MyClass:0x27d6458>
irb(main):016:0> b = 11
=> 11
irb(main):019:0> c.instance_eval("self.length = #{b}")
=> 11
irb(main):020:0> c.length
=> 11
irb(main):019:0> c.instance_eval("self.length")
=> 11
或
irb(main):021:0> c.send :length
=> 11
我觉得我不太明白你的问题。 'comment.author'会帮助你吗? – netmute
它会,但我希望能够通过任何符号,例如:date,:text到助手方法,并访问该属性。我想我可以使用eval(“评论”+ attr.to_s),但似乎很弱。 – brad