Carrierwave和Activerecord多个查询

时间:2012-07-25 02:32:22

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.1 carrierwave

我终于诊断出我在activerecord中查询表时遇到的问题。而不是使用Model.all执行1个查询,而是分别调用每个查询。当我发表评论

时,错误已修复
  mount_uploader :image, ImageUploader
  mount_uploader :home_image, HomeImageUploader

由于某种原因,mount_uploader再次调用每个类实例并减慢查询速度。有人有过类似的问题吗?我在carrierwave github docs中看到了添加

require 'carrierwave/orm/activerecord'

到我的模型课但是没有任何帮助。另外,对于载波文档中的这一行感到困惑,“确保在加载ORM后加载CarrierWave”。任何建议都将非常感谢,谢谢。

2 个答案:

答案 0 :(得分:2)

我终于找到了这个错误,所有这些额外的查询都是因为我在我的上传程序中设置store_dir而进行的

 "images/#{Rails.env}/#{model.class.to_s.underscore}/#{model.class.find(model.id).name}"

它不断加载模型以获取其名称。我把它改成了

"images/#{Rails.env}/#{model.class.to_s.underscore}/#{model.id}"

它解决了我的查询问题。我希望这可以帮助其他人。

答案 1 :(得分:0)

我遇到了同样的问题。在上传代码中:

def store_dir
  "uploads/products/#{model.product.id}"
end

制作了一些额外的产品型号。并且无法找到原因(尝试包括,eager_load等...)))))

我把它改成了

def store_dir
  "uploads/products/#{model.product_id}"
end

它解决了这个问题。谢谢你的指导。