データを編集するには、オブジェクトを変更したり、insert/delete後にsaveを実行します。saveを実行するまで変更はデータベースに反映されません。
データベースオブジェクト(GenericRecordオブジェクト)は、ハッシュに似たインターフェースで操作することができます。
# データの取得 title = object[‘title’] # データの設定 object[‘title’] = title
リレーションシップも属性と同じようにアクセスします。例えばBookオブジェクトのPublisherへのリレーションシップ"publisher"はobject['publisher']でアクセスできます。
リレーション先のデータにアクセスするにはobject['publisher']['name']のようにオブジェクトをつなげるか、object['publisher.name']のようにリレーション名と属性名をピリオドで区切る方法があります。
フェッチしたオブジェクトの内容を変更し、saveを実行します。オブジェクトの変更はEditingContextに自動的に伝えられます。
qualifier = Qualifier.format(“title like ‘*’”) fetchspec = FetchSpec.new(‘Book’, qualifier) objects = ec.fetch(fetchspec) object = object[0] object[‘title’] = ‘new data’ ec.save
createで新しいオブジェクトを作成し、saveを実行します。createは作成したオブジェクトをinsertしてから返しますので、insertを実行する必要はありません。
object = ec.create(‘Book’) object[‘title’] = ‘new data’ ec.save
1対多のリレーションを持つオブジェクトのときは、オブジェクトの配列をセットします。
publisher = ec.create(‘Publisher’) book1 = ec.create(‘Book’) book2 = ec.create(‘Book’) # データを入力 publisher[‘name’] = ‘new publisher’ book[‘title’] = ‘new book1’ book[‘title’] = ‘new book2’ # リレーションをセット publisher[‘books’] = [book1, book2] # データベースに書き込む ec.save
削除したいオブジェクトをdeleteし、saveを実行します。リレーションを持つ場合は、モデルファイルで設定した規則に従ってリレーション先のオブジェクトが処理されます。
ec.delete(object) ec.save