我怎样才能制作这个代码,更像Ruby-esque?

时间:2010-05-07 14:31:47

标签: ruby refactoring

unless scope.nil?
  @page ||= Page.find(id, :scope => Page.find(scope) )
else
  @page ||= Page.find(id)
end

5 个答案:

答案 0 :(得分:3)

@page ||=  Page.find id, :scope => (Page.find scope if scope)

答案 1 :(得分:2)

这有点干嘛:

find_opts = scope.nil? ? {} : {:scope => Page.find(scope)}
@page ||= Page.find(id, find_opts)

答案 2 :(得分:1)

我会像下面这样编写有问题的块。这真的归结为偏好,但我发现这种方式最具可读性。

@page ||=
  if scope
    Page.find id, :scope => Page.find(scope)
  else
    Page.find id
  end

答案 3 :(得分:0)

你可以这样做:

@page ||= unless scope.nil?
  Page.find(id, :scope => Page.find(scope))
else
  Page.find(id)
end

答案 4 :(得分:0)

或者:

@page ||= scope.nil? ? Page.find(id) : Page.find(id, :scope => Page.find(scope))