2012-04-16 13 views
1

私は在庫システムを作ろうとしています。私のテーブルは、デフォルトで主キーとしてインデックス "id"を持っています。私の在庫番号は、テーブルに新しいエントリを作成するための一意の値でなければなりません。在庫がすでに存在する場合は、属性を更新します。どのようにこれを行うのですか?インベントリ番号をプライマリキーとすることで?既に存在する在庫を確認して更新する手段がありますか?Ruby Rails - save vs updateどこのメソッド

答えて

0

は、これが働いた:create_or_update method in rails

my_class = ClassName.find_or_initialize_by_name(name) 

my_class.update_attributes({:street_address => self.street_address,.....}) 
2

固有のフィールドnumber(たとえば)を使用できます。あなたより汚い方法find_or_create_by_<field_name>を使用することができます。

@ticket = Ticket.find_or_create_by_number(503) 

更新日:

@ticket.attrib = 'new attribute value' 
@ticket.save 

または

@ticket.update_attribute :attrib, 'new attribute value' 
+0

ありがとうck3g!このメソッドは既存のレコードも更新しますか? –

+0

チケットが既に存在する場合は、このメソッドを取得してください。存在しない場合は作成します。その後、update_attribute、saveなどを使用できます。 – ck3g

関連する問題