为什么我需要在此类方法中添加public?

时间:2018-06-08 02:39:52

标签: ruby-on-rails class-method

这里有新的Rails用户。我在rails控制台中运行Product.first.highest_rating_comment时遇到NoMethodError:私有方法。

因此添加了公共信息并且工作了 - >

class Product < ApplicationRecord
  has_many :comments

public

  def highest_rating_comment
    comments.rating_desc.first
  end

end

为什么呢?我认为类方法默认是公开的吗?

image of terminal

2 个答案:

答案 0 :(得分:2)

调用私有方法的唯一方法是使用public方法。

你是对的。默认情况下,所有方法都是公共的。因此,您无需在课程中使用public

您可以从here了解详情。

答案 1 :(得分:0)

我尝试了你的代码并且工作正常。

class Product 

  public

    def highest_rating_comment

      p "This gonna print Hi"  

    end

end

Product.new.highest_rating_comment

输出: “这将打印嗨”