#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
будьте готовы обрабатывать ошибки, если идентификатор уже взят (кто знает?)