重构以下代码?

时间:2017-04-02 15:07:27

标签: ruby-on-rails ruby-on-rails-4

我有两个模型博客和评论。博客包含多条评论,评论只能属于1博客。

用于显示API 博客/ 2 /评论/ 1

我必须在评论控制器

中使用以下代码
def show
    @blog = Blog.find(params[:blog_id])
    @comments = @blog.comments
    @comment = @comments[params[:id].to_i - 1]
  end

我觉得这段代码非常笨拙,尤其是最后一段@comments[params[:id].to_i - 1]。我必须将参数id转换为整数,然后更改为基于0的数组索引。任何重构都可以在这里发生

1 个答案:

答案 0 :(得分:0)

你的意思是让它看起来更像" Rails"?喜欢这个?

def show
     @blog = Blog.find(params[:blog_id])
     @comment = @blog.comments.find params[:id]
end

根据OP的评论。您的转型是必要。但是,您可以避免加载整个注释集,只选择您需要的注释。

@comment = @blog.comments.offset(params[:id].to_i - 1).limit(1)