所以我需要在模型创建方法中创建属于我的模型(字符串与图像的url)的图像。 问题是,这个图像是一个QR码,应该包含被创建的对象的url。需要在创建时生成一个包含id的对象
但是URL(当然)在create方法中是未知的,因为没有id在给定对象的那一点存在。
任何想法如何解决这个问题?
所以我需要在模型创建方法中创建属于我的模型(字符串与图像的url)的图像。 问题是,这个图像是一个QR码,应该包含被创建的对象的url。需要在创建时生成一个包含id的对象
但是URL(当然)在create方法中是未知的,因为没有id在给定对象的那一点存在。
任何想法如何解决这个问题?
除了在URL中使用非id列(例如,调用以生成UDID/GUID并在url中使用该列),我没有看到一个明显的方式来做到这一点,或者节省两个阶段,采用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
使用两通节能:-)
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'回调图像? – Mischa 2012-01-06 15:34:50
@Mischa好点,但我无法访问我的模型中的url-helper方法来创建我的qr-image – choise 2012-01-06 15:50:11
为什么不呢? http://stackoverflow.com/questions/341143/can-rails-routing-helpers-i-e-mymodel-pathmodel-be-used-in-models – Mischa 2012-01-06 15:56:31