3

在我开始用我自己创建的笨拙的方法乱扔代码之前,我想知道是否有一个现有的 Ruby/Rails 方法可以:

  • 如果@foo 存在并且@foo 有一个ID,则返回true(例如,你在foo#show 中)
  • 如果@foo 存在但还没有 ID(例如你在 foo#new 中),则返回 false
  • 如果@foo 不存在,则返回 false(例如,您在 bar#index 中)

我尝试搜索 API 文档,但我使用的术语必然如此笼统(ID、保存、存在等),以至于到目前为止我还没有找到任何东西。

4

2 回答 2

4

您可以使用.try

@foo.try(:id)

将返回 id 或 nil。

如果您严格要求真假,

!!@foo.try(:id)
于 2012-12-17T13:32:27.853 回答
0

对于前 2 个,使用!@foo.new_record?new_record?如果模型已保存到数据库并且是否具有 id,则方法返回 true/false。

第三,阅读这个:定义?

于 2012-12-17T13:38:07.053 回答