Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby语法(rails模型)_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails ruby语法(rails模型)

Ruby on rails ruby语法(rails模型),ruby-on-rails,ruby,Ruby On Rails,Ruby,有人能解释一下这两者的区别吗: 假设我有一个模型产品 在该模型中,我有: self.price self[:price] 我假设一个调用一个属性(产品价格),而另一个调用一个名为'price'的方法 如果这是真的,那么哪个是哪个?都在调用一个方法: 第一个调用方法:price 第二个调用方法:[],将:price作为参数传递 你可以通过运行 self.method(:[]) #=> #<Method: User(ActiveRecord::AttributeMethods)#[

有人能解释一下这两者的区别吗:

假设我有一个模型产品

在该模型中,我有:

self.price
self[:price]
我假设一个调用一个属性(产品价格),而另一个调用一个名为'price'的方法

如果这是真的,那么哪个是哪个?

都在调用一个方法:

  • 第一个调用方法
    :price

  • 第二个调用方法
    :[]
    ,将
    :price
    作为参数传递

你可以通过运行

self.method(:[])
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]>
self.method(:[])
#=> #
基本上,只要您想知道方法从何而来,就可以使用。

调用方法:

  • 第一个调用方法
    :price

  • 第二个调用方法
    :[]
    ,将
    :price
    作为参数传递

你可以通过运行

self.method(:[])
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]>
self.method(:[])
#=> #

基本上,只要您想知道方法来自何处,就可以使用。

Rails将这些模型属性创建为访问器,从而动态创建获取/设置值的方法。在您自己的类中使用也很有趣,请看这里:

Rails将这些模型属性创建为访问器,动态创建获取/设置值的方法。在您自己的类中使用它也很有趣,请看这里:

谢谢您的解释。谢谢您的解释。因此,如果我使用与属性相同的名称创建自己的方法,我的方法被调用不是rails默认值?这里有一篇文章详细说明了您可能希望如何实现这一点:因此,如果我使用与属性相同的名称创建自己的方法,我的方法被调用不是rails默认值?这里有一篇文章详细说明了您可能希望如何实现这一点: