2011-10-10 45 views
0

我們必須使用具有刪除前相同標識的活動資源來恢復已刪除的記錄。在活動資源對象上設置標識

a = ActiveResourceModel.new 

a.new? # true 

a = ActiveResourceModel.new 

a.id = 1234 

a.new? # false 

如果活動資源對象具有設置的id屬性,則始終將其視爲保存對象,並始終嘗試更新記錄。我們必須創建一個自定義發佈操作來將該ID設置爲之前的值。有沒有其他的方式來做到這一點?

回答

1

ActiveResource::Base源表明這一點:

def new? 
    id.nil? 
end 

所以,你必須重寫new?方法,或調用私有方法create直接

class YourModel < ActiveResource::Base 

    def restore 
    create 
    end 

    # or 
    def new? 
    @some_custom_flag_variable ? true : id.nil? 
    end 

end 

準備處理errrors如果id爲已經採取,但(誰知道?)