簡體   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