13

如果我正在编写一个私有方法,rails 是否认为单词下的每个方法private都是私有的?还是应该只对第一种方法是私有的?

  private

    def signed_in_user
      redirect_to signin_url, notice: "Please sign in." unless signed_in?
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    end 

这是否意味着signed_in_user并且correct_user是私人的?还是只是signed_in_user?这是否意味着每当我需要编写私有方法时,它现在应该在我的文件末尾?

4

5 回答 5

12

是的,private关键字后面的每个方法都是私有的。如果你想改回定义非私有方法,你可以使用不同的关键字,比如publicor protected

请参阅在 Ruby 中将私有方法放在何处?

于 2013-05-12T17:47:34.440 回答
4

是的,下面的所有方法private都是私有的。通常,您确实会在文件底部找到这些方法。

但是您可以通过编写另一个关键字来“停止”它protected,然后将保护以下所有方法。

于 2013-05-12T17:46:34.093 回答
4

或者您甚至可以用这种方式定义您的访问控制,将您的方法列为访问控制函数(公共、受保护、私有)的参数:

class SomeClass
    def method1
        ...
    end

    def method2
        ...
    end

    def method3
        ...
    end
    # ... more methods def

    public    :method1, method4
    protected :method3
    private   :method2
end
于 2013-11-26T14:37:45.233 回答
3

正如其他人所写,紧跟 private 关键字的每个方法在 Ruby 中都是私有的。这是简单的 Ruby 语法,与 rails 无关。

private
  .....
def pvt_meth_1
  .....
end

def pvt_meth_2
  .....
end

public

def pub_meth_1
  ......
end
于 2013-05-12T18:46:43.570 回答
-1

它与 c++ 私有、公共标签的工作方式相同,所以是的,它们都是私有的

于 2019-09-29T15:51:38.710 回答