Почему мне нужно добавить public для этого метода класса? - PullRequest
0 голосов
/ 08 июня 2018

Новый пользователь Rails здесь.Я получаю NoMethodError: закрытый метод при запуске Product.first.highest_rating_comment в консоли rails.

Итак, добавил public, и это сработало ->

class Product < ApplicationRecord
  has_many :comments

public

  def highest_rating_comment
    comments.rating_desc.first
  end

end

Почему?Я думал, что методы класса по умолчанию были публичными?

изображение терминала

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я попробовал твой код, и он работает нормально.

class Product 

  public

    def highest_rating_comment

      p "This gonna print Hi"  

    end

end

Product.new.highest_rating_comment

Вывод: "Это собирается напечатать Привет"

0 голосов
/ 08 июня 2018

Единственный способ вызвать закрытый метод - из открытого метода.

И вы правы.Все методы общедоступны по умолчанию.Поэтому вам не нужно использовать public в классе.

Подробнее об этом можно узнать из здесь .

...