如果我正在编写私有方法,那么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
?这是否意味着每当我需要编写私有方法时,它应该在我的文件末尾?
答案 0 :(得分:10)
是的,private
关键字后面的每个方法都是私有的。如果您想更改回定义非私有方法,可以使用其他关键字,例如public
或protected
。
答案 1 :(得分:3)
是private
下的所有方法都是私有的。通常,您确实会在文件底部找到这些方法。
但你可以"停止"通过编写另一个关键字protected
,然后保护以下所有方法。
答案 2 :(得分:3)
或者您甚至可以通过这种方式定义访问控制,将您的方法列为访问控制功能的参数(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
答案 3 :(得分:2)
正如其他人所写的那样,立即跟随私有关键字的每个方法都是私有的。这是简单的Ruby语法,与rails无关。
private
.....
def pvt_meth_1
.....
end
def pvt_meth_2
.....
end
public
def pub_meth_1
......
end
答案 4 :(得分:-1)
它的工作方式与c ++私有,公共标签相同,因此,它们都是私有的