необходимо создать объект при создании, который содержит идентификатор - PullRequest
0 голосов
/ 06 января 2012

, поэтому мне нужно создать изображение, которое принадлежит моей модели (строка с URL-адресом изображения) в методе создания моделей.проблема в том, что это изображение представляет собой QR-код, который должен содержать URL создаваемого объекта.

, но URL (конечно) неизвестен в методе создания, поскольку в этой точке не существует идентификаторадля данного объекта.

есть идеи, как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Я не вижу очевидного способа сделать это, кроме использования столбца без идентификатора в URL (например, сделать вызов для генерации UDID / GUID и использовать его в URL http://mysite.com/obj/#{udid}), или сохранить в два этапа, используя обратный вызов after_create, чтобы установить изображение после сохранения записи:

class MyModel < ActiveRecord::Base

  after_create :set_image

  def set_image
    if image_attribute == nil
      image_attribute = generate_a_qr_code(self)
      self.save
    end
  end

end
0 голосов
/ 06 января 2012

Использование двухпроходного сохранения: -)

def create
   model = Model.new params[:model]

   if model.save
     # at this point you have an id
     model.qr = generate_qr model
     model.save

     # proceed as usual
  end
end

Это для традиционных баз данных с автоинкрементным столбцом в качестве первичного ключа. В некоторых базах данных ключи генерируются с использованием последовательностей, которые вы можете запросить, чтобы получить новое значение (до сохранения вашего объекта). В некоторых базах данных (MongoDB) ключи могут быть сгенерированы на клиенте полностью.

...