何时在Rails中使用私有方法?

Yor*_*ang 6 ruby-on-rails

我不完全确定rails中私有方法的概念,以及何时以及如何使用它.有规则吗?私人与公众之间有什么区别?例如,在以下示例中,为什么在此处使用私有方法而不是其他两个方法.最好的做法是始终使用私有方法进行用户生成的输入吗?请赐教.非常感谢!

class PostsController < ApplicationController

def index
  @posts = Post.all.order("created_at DESC")
end

def new
 @post = Post.new
end

def create
 @post = Post.new(post_params)
  if @post.save
 redirect to @post
 else
  render 'new'
 end
end

def show
  @post = Post.find(params[:id])
end

private

def post_params
  params.require(:post).permit(:title, :body)
 end
end
Run Code Online (Sandbox Code Playgroud)

inf*_*tor 7

在Rails ActionController上下文中,控制器类的公共方法通过Rails路由公开给Web服务器.您可以定义到类的公共方法的路由,并将它们用作控制器操作.

但是,您无法定义到私有方法的路由.它们被设计为内部帮助程序方法,无法将它们公开给Web服务器.

这导致控制器中的基本约定:将每个控制器操作定义为公共方法,为每个控制器操作定义路由,并定义与操作相对应的视图,或将每个操作链接到另一个操作或视图.将私有方法或其他类用于辅助方法或其他组件.

当然这些都是惯例.如果您确定没有人会定义到这些方法的路由或将它们暴露给客户端并不会有害(因为暴露敏感信息,创建漏洞或只是看起来很愚蠢),您可以在控制器中公开所有方法.