3

自分で作成した扱いにくいメソッドでコードを散らかし始める前に、次のことを行う既存の Ruby/Rails メソッドがあるかどうか疑問に思っています。

  • @foo が存在し、@foo に ID がある場合 (たとえば、foo#show にいる場合) に true を返します。
  • @foo が存在するが、まだ ID を持っていない場合 (たとえば、foo#new にいる場合) は false を返します。
  • @foo が存在しない場合は false を返します (例: bar#index にいる場合)

API ドキュメントを検索しようとしましたが、使用している用語は必然的に一般的 (ID、保存、存在など) であるため、これまでのところ何も見つかりませんでした。

4

2 に答える 2

4

使用できます.try

@foo.try(:id)

id または nil を返します。

厳密に true または false が必要な場合は、

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

最初の 2 つは、!@foo.new_record?new_record?を使用します。モデルがデータベースに保存され、id があるかどうかにかかわらず、メソッドは true/false を返します。

3 番目に、これを読んでください

于 2012-12-17T13:38:07.053 に答える