我一直在 Rails 代码中看到这一点:
before filter :get_post, only: [:edit, :update, :destroy]
def edit
# code .......
end
def update
# code .......
end
def destroy
# code .......
end
private
def get_post
@post = Post.find(params[:id])
end
我知道它不会重复同一行代码三次,但是通过将代码重构为私有方法而不隐藏实例变量和之前的过滤器,没有更容易阅读和更好的方法来完成同样的事情?
private
def get_post(post_id)
Post.find(post_id)
end
然后您可以将实例变量保留在操作中
def edit
@post = get_post(params[:id])
end
在私有方法中隐藏实例变量在概念上没有意义。为什么这在 Rails 中如此普遍?