【问题标题】:What is the object method in RubyRuby中的对象方法是什么
【发布时间】:2022-01-25 23:12:36
【问题描述】:

我在一个helper中找到了一段action代码,其目的是改变controller中render JSON的API内容:

class Users::RefDecorator < Draper::Decorator
    delegate_all

    def ava
      object.user.ava
    end

User 是另一个模型,ava 是它的列。但是什么是“对象”。开头是什么意思?

【问题讨论】:

  • 根据您提供的代码,对象是nil。您能否提供完整的课程代码以便回答这个问题?
  • 好的,我编辑了问题
  • 查看 draper gem github.com/drapergem/draper#accessing-the-model 的自述文件。 object 参考装饰模型。
  • 非常感谢
  • strftime("%A, %B %e") 是什么意思?

标签: ruby-on-rails ruby


【解决方案1】:

这个装饰器继承自Draper::Decoratorobject 是在Draper::Decorator 上定义的一个方法。引用自docs

#objectObject(只读)

也称为:model

返回被装饰的对象。

它将作为第一个参数传递给decorator's initialize的对象返回。

【讨论】:

    【解决方案2】:

    如果Draper::Decorator作为父类,object指的是原始对象。

    所以我想你写的是这样的:

    user = SpecialUserClass.new
    
    decorated_user = user.decorate
    # or
    decorated_user = Users::ReferrerProfileDecorator.decorate(user)
    
    # now
    decorated_user.object == user
    

    虽然通过添加delegate_all 你不会经常看到它。来自原始 gem 文档:

    delegate_all 调用在装饰器上提供了方法

    【讨论】:

      【解决方案3】:

      什么是Ruby中的对象方法

      Ruby 中没有名为 object 的方法。

      但是“对象”是什么?开头是什么意思?

      它将消息object 发送到隐式接收者self(在其他一些语言中,这将被称为“在this 上调用object 方法”)。

      此方法似乎是由您正在使用的某个库定义的。但是,它不是您用来标记问题的库之一,因此很难判断它可能来自哪里。

      【讨论】:

        猜你喜欢
        • 2012-01-09
        • 2011-08-04
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 2016-12-26
        相关资源
        最近更新 更多