【问题标题】:Print Object attributes after creation in rails在rails中创建后打印对象属性
【发布时间】:2019-10-31 15:50:13
【问题描述】:

我是 Rails 新手,我想在控制台中突出显示最后创建的 Document 记录的名称。为此我在模型文件中使用,之后?创建回调。

无论如何,运行创建过程后,我无法在控制台中显示名称。如何才能显示最后创建的Document 类型记录的名称?

 class Document < ApplicationRecord
  belongs_to :storage

  after_create :my_function

  def my_function
    puts Document.name
  end
 end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-5


    【解决方案1】:

    当您使用Document 时,您引用的是类,而不是新创建的实例。而是这样做:

      def my_function
        puts name
      end
    

    为了更好的理解,也可以调用:

      def my_function
        puts self.name
      end
    

    以便您看到您正在当前实例上调用此name 方法。不过这不是惯用的。

    【讨论】:

    • 但 after_create 根本不会触发。即使我尝试打印一个刺痛它也不会被打印出来。也许我应该使用 rails 提供的另一个回调?
    • 您确定文档是持久化的吗? after_create 应在定期创建文档后调用。顺便说一句,您如何创建文档?这个调用的结果是什么?
    【解决方案2】:

    如果要打印Document最后创建的记录,

    你应该这样做

    puts Document.last.name
    

    基本上,当您调用“Document.name”时,您是在调用 Document 类的实例方法 #name。你需要在一个实例上调用它,也就是一个记录。

    如果您想打印出您正在访问的当前文档记录的名称

     puts self.name
    

    所有这些都假设您在 Document 模型上有一个 name 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多