オブジェクトのシリアル化された配列をデータベースのテキスト フィールドにowner
保存するモデルがあります。item
この配列にアイテムを簡単に追加することはできますが、アイテムを削除したい場合は、各オブジェクトに一意の識別子がないためできません。
これを解決するためのすぐに利用できるアプローチはありますか、それとも何らかの一意の ID ジェネレーターを実装する必要がありますか?
class Owner < ActiveRecord::Base
serialize :items
end
class Item
attr_accessor :name
end
owner = Owner.new
owner.items = []
owner.items << Item.new(name: 'Test')
owner.save
のshow
ビューにowner
アイテムがリストされており、リンクを含めたいのですがremove item
、アイテムを識別する方法がありません。
for each item...
<%= link_to 'Remove Item', remove_item_path(item) %> # item won't match after owner is reloaded in the controller
# controller
owner = Owner.find(params[:id])
owner.items.delete(params[:item]) # This won't work, items have been reloaded when owner was found
どんな提案でも大歓迎です。