データを編集するには、オブジェクトを変更したり、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