first_or_create
私はその方法が本当に好きです:
# Find the first user named Scarlett or create a new one with a particular last name.
User.where(:first_name => 'Scarlett').first_or_create(:last_name => 'Johansson')
# => <User id: 2, first_name: 'Scarlett', last_name: 'Johansson'>
ユーザーが存在しないか異なる場合、last_name 'Johannson' でユーザーを更新する方法を知りたいと思っていました。これを行う最も簡単な方法を探しています。上記のようなワンライナーが理想的です。
考えられるアプローチの 1 つは、 first_or_initialize を update_attributes と組み合わせて使用することです。このアプローチに関する唯一の懸念は、提供されたフィールドが 100% 一致した場合でも更新が実行されることです。