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

时间:2013-05-23 16:55:59

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

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

def save_question(content)

  question = Question.new

  question.content = content

  question.save

end

当我在if语句中运行它时

if save_question(content)
  puts "Everything is cool"
else
  puts "Something went wrong"
end

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

def save_question(content)

  question = Question.new

  question.content = content

  return false unless question.save

end

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

1 个答案:

答案 0 :(得分:6)

您正在修改您的方法,以便它返回falsenil,这也是假的。

你的最后一行现在是

return false unless question.save

此处没有隐式return true。如果question.save返回true,则永远不会执行return false,并且表达式的计算结果为nil

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

def save_question(content)
  if !question.save
    return false
  end
end