在活动资源对象上设置id

时间:2011-10-10 13:00:12

标签: ruby-on-rails activeresource

我们必须使用具有与删除前相同ID的活动资源来恢复已删除的记录。

a = ActiveResourceModel.new

a.new? # true

a = ActiveResourceModel.new

a.id = 1234

a.new? # false

如果活动资源对象设置了id属性,则始终将其视为已保存对象,并始终尝试更新记录。我们必须创建自定义帖子操作以将id设置为先前的值。还有其他方法吗?

1 个答案:

答案 0 :(得分: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

准备好处理错误,如果id已被占用,但是(谁知道?)