Установка идентификатора для объекта активного ресурса

#ruby-on-rails #activeresource

#ruby-on-rails #activeresource

Вопрос:

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

 a = ActiveResourceModel.new

a.new? # true

a = ActiveResourceModel.new

a.id = 1234

a.new? # false
  

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

Ответ №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
  

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