我有一个模型使用Carrierwave作为上传器将文件上传到雾存储。
问题在于,当我创建100个模型对象时,它们都会上传相同的文件。
我需要模型实例来引用相同的上传文件。 一对多关系,其中有许多模型实例和1个文件。
目前,该文件是我的模型messages.rb上的一个名为attachment的属性 -
class Message < ActiveRecord::Base
attr_accessible :body, :remote_attachment_url, :from, :to, :status, :attachment, :campaign, :version, :user_id, :SmsId, :response, :response_code, :client_id
mount_uploader :attachment, AttachmentUploader
end
在 MessagesController.rb 中创建新的Message实例时,我在控制器中设置了附件 -
recipients.each do |value|
@message = Message.new(:attachment => params[:message][:attachment], :campaign => message[:campaign], :version => message[:version], :to => value, :body => body, :status => status, :user_id => current_user.id, :client_id => client.id )
end
我正在使用Ruby 2.0,Rails 4
我通过将附件文件推送到新模型然后在消息对象和附件对象之间建立关联来解决此问题。
MessagesController:
@attachment = Attachment.create(params[:message][:attachment_attributes])
recipients.each do |value|
@message = Message.new(:campaign => params[:message][:campaign], :version => params[:message][:version], :to => value, :body => params[:message][:body], :status => status, :user_id => current_user.id, :client_id => client.id )
@message.attachment = @attachment
end
消息模型:
attr_accessible :attachment_id, :attachment_attributes
belongs_to :attachment
accepts_nested_attributes_for :attachment
附件模型:
attr_accessible :attached, :remote_attached_url, :attachment_attributes
mount_uploader :attached, AttachmentUploader
答案 0 :(得分:0)
如果您的模型中安装了载波上传器,则您拥有一个属性:
mount_uploader :attachment, YourUploader
因此,假设您的新对象已创建,您应该可以像这样分配图像:
newObj.attachment = anotherObj.attachment
newObj.save
如果有效,请告诉我。