Распечатать атрибуты объекта после создания в рельсах - PullRequest
2 голосов
/ 31 октября 2019

Я новичок в рельсах и хочу просто напечатать в консоли имя последней созданной записи Document. Для этого я использую в файле модели, после? создать обратный вызов.

Во всяком случае, я не могу получить имя, отображаемое в консоли после запуска процедуры создания. Как это сделать, чтобы отобразить имя последней созданной записи типа Document?

 class Document < ApplicationRecord
  belongs_to :storage

  after_create :my_function

  def my_function
    puts Document.name
  end
 end

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Когда вы используете Document, вы ссылаетесь на класс, а не на вновь созданный экземпляр. Вместо этого выполните:

  def my_function
    puts name
  end

Чтобы лучше это понять, вы также можете вызвать:

  def my_function
    puts self.name
  end

, чтобы увидеть, что вы вызываете этот метод name для текущего экземпляра. Хотя это не идиоматично.

0 голосов
/ 31 октября 2019

Если вы хотите напечатать последнюю созданную запись документа,

вы должны сделать

puts Document.last.name

В основном, когда вы вызываете «Document.name», вы вызываете #name,метод экземпляра в классе Document. Вы должны вызвать его в инстансе, иначе говоря.

Если вы хотите распечатать имя текущей CURRENT-записи документа, к которой вы обращаетесь

 puts self.name

Все это предполагает, что у вас есть атрибут имени в вашей модели документа,

...