ID를 포함하는 객체를 생성해야하므로 model create 메소드에서 내 모델 (이미지의 URL이있는 문자열)에 속하는 이미지를 만들어야합니다. 문제는이 이미지가 생성 된 개체의 URL을 포함해야하는 QR 코드라는 것입니다.은
하지만 주어진 객체에 해당 위치에 ID가 없기 때문에 (물론) URL은 create 메소드에서 알 수 없습니다.
이 아이디어를 해결하는 방법은 무엇입니까?
ID를 포함하는 객체를 생성해야하므로 model create 메소드에서 내 모델 (이미지의 URL이있는 문자열)에 속하는 이미지를 만들어야합니다. 문제는이 이미지가 생성 된 개체의 URL을 포함해야하는 QR 코드라는 것입니다.은
하지만 주어진 객체에 해당 위치에 ID가 없기 때문에 (물론) URL은 create 메소드에서 알 수 없습니다.
이 아이디어를 해결하는 방법은 무엇입니까?
UDID/GUID를 생성하기 위해 호출하고 URL http://mysite.com/obj/# (udid}에서 사용)과 같이 URL 내의 비 ID 열을 사용하는 것보다 명백한 방법이 없습니다.
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
를 사용하여 두 개의 패스 절약 :-)이 기본 키로 자동 증가 열 전통적인 데이터베이스입니다
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)에서는 클라이언트에서 키를 완전히 생성 할 수 있습니다.
귀하의 질문이 조금 애매하지만, 당신은 당신의 모델에'after_create' 콜백에서 이미지를 만들 수 없습니다 : 이미지를 설정 after_create 콜백을 사용하여 두 단계로 저장하면 기록이 저장되고 나면 ? – Mischa
@ 좋은 지적이지만, 내 qr-image를 만들기 위해 url-helper 메소드에 액세스 할 수 없습니다. – choise
왜 안되나요? http://stackoverflow.com/questions/341143/can-rails-routing-helpers-i-e-mymodel-pathmodel-be-used-in-models – Mischa