2011-10-10 35 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为已经采取,但(谁知道?)