Ruby on rails 我为什么要将课程设置为私人课程?
当我回顾我的代码,实现我学到的东西时,有一件事困扰着我。为什么这些方法或者通常的方法是私有的很重要Ruby on rails 我为什么要将课程设置为私人课程?,ruby-on-rails,Ruby On Rails,当我回顾我的代码,实现我学到的东西时,有一件事困扰着我。为什么这些方法或者通常的方法是私有的很重要 class ApplicationController < ActionController::Base before_action :require_login private def current_user @current_user ||= User.find(session[:user_id]) if session[:user_id] end
class ApplicationController < ActionController::Base
before_action :require_login
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
def require_login
if session.include? :user_id
user = User.find(session[:user_id])
else
redirect_to root_path, notice: "You must be signed in to do that!"
end
end
helper_method :current_user
end
class ApplicationController
有些方法指的是抽象功能。我认为没有必要。根据Rails指南
只有公共方法可以作为操作调用。最佳做法是降低方法(使用私有
或受保护
)的可见性,这些方法不打算作为操作,如辅助方法或过滤器
使所有支持操作的助手方法都作为私有方法的一般做法。这有助于将操作与助手方法区分开来。在开发API时(在传统意义上:描述如何使用程序,在这种情况下是类和方法),private
标记它是一种不需要知道的方法(和/或甚至不利于从“外部”调用)当您想要与该类或其实例交互时
关于“它重要吗?”:从技术角度来看,在Ruby中:不太重要。如果需要,可以对其他对象调用私有方法(使用“技巧”,但不使用通常的调用:@myobject.themethod()
)
从用户的角度来看:很多。你在交流你希望你的东西如何被使用
从开发者的角度看:P>也是一个日志,如果你考虑用户(见前面的点)。如果您积极思考您的API(模块、类、方法)并有意识地使用private
,您可能会得到设计更好的“接口”(API)
请注意,在其他编程语言(例如Java)public
、protected
和private
中,也可能强烈声明子类如何访问类和接口的某些内部(此处“接口”一词表示语言功能)。因此,如果你曾经使用过另一种语言,一定要看看那里的private
是什么意思
我没有找到关于私人的官方文件,但例如,此rubyguide: