Установка идентификатора для активного объекта ресурса - PullRequest
0 голосов
/ 10 октября 2011

Мы должны восстановить удаленную запись, используя активный ресурс с тем же идентификатором, который был до удаления.

a = ActiveResourceModel.new

a.new? # true

a = ActiveResourceModel.new

a.id = 1234

a.new? # false

Если для активного объекта ресурса установлен атрибут id, он всегда считается сохраненным объектом и всегда пытается обновить запись. Нам пришлось создать собственное действие post, чтобы установить id на предыдущее значение. Есть ли другой способ сделать это?

1 Ответ

1 голос
/ 10 октября 2011

источник 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

будьте готовы обработать ошибки, если идентификатор уже занят, хотя (кто знает?)

...