繁体   English   中英

Ruby on Rails私有方法?

[英]Ruby on Rails Private Methods?

如果我正在写一个私有方法,那么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_usercorrect_user是私有的? 还是只signed_in_user 这是否意味着每当我需要编写私有方法时,它应该在我的文件的末尾?

是的, private关键字之后的每个方法都是私有的。 如果要更改回定义非私有方法,可以使用其他关键字,如publicprotected

请参阅在Ruby中放置私有方法的位置?

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

但是你可以通过编写另一个像protected这样的关键字来“停止”它,然后protected所有后面的方法。

或者您甚至可以通过这种方式定义访问控制,将您的方法列为访问控制功能的参数(public,protected,private):

class SomeClass
    def method1
        ...
    end

    def method2
        ...
    end

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

    public    :method1, method4
    protected :method3
    private   :method2
end

正如其他人所写的那样,随后在private关键字后面的每个方法都是私有的。 这是简单的Ruby语法,与rails无关。

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

def pvt_meth_2
  .....
end

public

def pub_meth_1
  ......
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM