Powered by SmartDoc

データを編集する

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