我在Sinatra應用程序中使用了datamapper。我目前使用命令使用數據映射器從類中刪除屬性時刪除數據庫字段
DataMapper.finalize.auto_upgrade!
來處理遷移。我有兩個類(藝術家和事件)與'has_n'和'belongs_to'協會。一個藝術家和一位藝術家可以擁有許多與之相關的活動。
我改變的關聯是通過刪除類定義其支配在模型中的原始one_to_many關聯的之前的部分並加入
has n, :artists, :through => Resource
到事件類和MANY_TO_MANY關係對應的代碼的藝術家班。當我做一個新的事件時,一個錯誤將被啓動。
#<DataObjects::IntegrityError: events.artist_id may not be NULL
:artist_id字段是兩個類之間原始關聯的遺蹟。新的many_to_many關聯由event.artists [i]訪問(其中「i」只是從0到關聯的藝術家-1的整數索引)。顯然藝術家和事件類之間的原始關聯方法仍然存在?我的猜測是,解決方案不僅僅是使用內置到datamapper中的auto_upgrade方法,而是寫一個明確的遷移。如果有辦法處理對數據庫的這種類型的更改,並且仍然有auto_upgrade方法的工作,那就太好了!
如果您需要更多關於我的模型或任何東西的詳細信息,請詢問我很樂意添加它們。
哈,是啊我也一直在本地刪除與navicat列,但我絕對想要得到適合在heroku上的應用程序的遷移工作。 – wuliwong 2012-04-12 16:28:10