【问题标题】:ruby syntax (rails models) [duplicate]ruby 语法(rails 模型)
【发布时间】:2017-10-07 19:33:40
【问题描述】:

谁能解释一下这两者的区别:

假设我有一个模型产品

在我拥有的那个模型中:

self.price
self[:price]

我假设一个调用一个属性(产品价格),而另一个调用一个名为“价格”的方法?

如果是真的,那是哪个?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    都调用一个方法:

    • 第一个调用方法:price

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

    你可以通过运行来检查

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

    基本上任何时候你想知道,方法来自哪里,你都可以使用Object#method

    【讨论】:

    • 感谢您的解释。
    【解决方案2】:

    Rails 将这些模型属性创建为动态创建获取/设置值的方法的访问器。在您自己的课程中使用它也很有趣,请看这里:http://ruby-doc.org/core/Module.html#method-i-attr_accessor

    【讨论】:

    • 所以如果我创建自己的方法与属性同名,我的方法会被调用而不是默认的 Rails?
    • 这里有一篇文章详细说明了您可能希望如何实现这一目标:stackoverflow.com/questions/373731/…
    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多