[英]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_user
和correct_user
是私有的? 還是只signed_in_user
? 這是否意味着每當我需要編寫私有方法時,它應該在我的文件的末尾?
是的, private
關鍵字之后的每個方法都是私有的。 如果要更改回定義非私有方法,可以使用其他關鍵字,如public
或protected
。
是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.