【发布时间】:2017-10-07 19:33:40
【问题描述】:
谁能解释一下这两者的区别:
假设我有一个模型产品
在我拥有的那个模型中:
self.price
self[:price]
我假设一个调用一个属性(产品价格),而另一个调用一个名为“价格”的方法?
如果是真的,那是哪个?
【问题讨论】:
标签: ruby-on-rails ruby
谁能解释一下这两者的区别:
假设我有一个模型产品
在我拥有的那个模型中:
self.price
self[:price]
我假设一个调用一个属性(产品价格),而另一个调用一个名为“价格”的方法?
如果是真的,那是哪个?
【问题讨论】:
标签: ruby-on-rails ruby
都调用一个方法:
第一个调用方法:price。
第二个调用方法:[],将:price作为参数传递。
你可以通过运行来检查
self.method(:[])
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]>
基本上任何时候你想知道,方法来自哪里,你都可以使用Object#method。
【讨论】:
Rails 将这些模型属性创建为动态创建获取/设置值的方法的访问器。在您自己的课程中使用它也很有趣,请看这里:http://ruby-doc.org/core/Module.html#method-i-attr_accessor
【讨论】: