create_or_update 的なメソッドをRailsで使いたいとき
既に該当するモデルの値が存在していたら update で値を更新して、まだ存在しない場合は create で新しくモデルのインスタンスを作成したい時ありませんか? 少なくとも自分にはありましたし、検索でここに辿り着いたあなたもきっとあると思います。
Railsならきっと簡単な方法があると思ったので調べてみたらありました。
やり方。
こんな感じでOK。
my_class = ClassName.find_or_initialize_by_name(name) my_class.update_attributes( :street_address => self.street_address, :city_name => self.city_name, :federalid => self.federalid, :state_prov_id => self.state_prov_id, :zip_code => self.zip_code )
注意点
ちなみに create_or_update
は ActiveRecord::Callbacks
の private 関数として用意されてるご様子。
[create_or_update (ActiveRecord::Callbacks) – APIdock][1]
参考
[ruby – create_or_update method in rails – Stack Overflow][2]