了解save方法及其返回的内容

jas*_*328 2 ruby activerecord ruby-on-rails ruby-on-rails-3

我有一个包含以下代码的方法.

def save_question(content)

  question = Question.new

  question.content = content

  question.save

end
Run Code Online (Sandbox Code Playgroud)

当我在if语句中运行它时

if save_question(content)
  puts "Everything is cool"
else
  puts "Something went wrong"
end
Run Code Online (Sandbox Code Playgroud)

该方法返回"Everything is cool".但是,如果我将方法更改为此

def save_question(content)

  question = Question.new

  question.content = content

  return false unless question.save

end
Run Code Online (Sandbox Code Playgroud)

然后if语句将返回"Something went wrong".我在这里错过了一些大事吗?我认为save方法返回true,这是,但为什么方法返回false?

mea*_*gar 6

你正在修改你的方法,以便它返回,false或者nil也是假的.

你的最后一行现在读了

return false unless question.save
Run Code Online (Sandbox Code Playgroud)

这里没有暗示return true.如果question.save返回true,return false则永远不执行,表达式求值为nil.

可以这样想:你期望这个版本的函数返回什么?

def save_question(content)
  if !question.save
    return false
  end
end
Run Code Online (Sandbox Code Playgroud)