【问题标题】:Rails - seeding with paperclip imagesRails - 用回形针图像播种
【发布时间】:2023-04-01 14:15:01
【问题描述】:

我发现了几个关于该主题的问题,并按照说明为我的模型添加了图像。但是,在播种时,即使我的模型有它,我也会收到错误“PG::UndefinedColumn: ERROR: column foods.meal_avatar 不存在”。这是我的膳食模型

class Meal < ActiveRecord::Base
  has_attached_file :meal_avatar, styles: { large: '300x300' }, default_url: '/images/:style/missing.png'
  validates_attachment_content_type :meal_avatar, content_type: /\Aimage\/.*\Z/
end

这是迁移

  def self.up
    change_table :meals do |t|
      t.attachment :meal_avatar
    end
  end

控制器中允许的参数

  def meal_params
    params.require(:meal).permit(:name, :meal_avatar)
  end

我为图像播种的方式(与上下文无关,但您可以理解)

meal_seed = [
  {
    name: "Salad",
    meal_avatar: File.new("app/assets/images/salad.jpg")
  }
]
meal_seed.each do |meal_params|
  meal = category.meals.find_or_create_by(meal_params)
end

知道为什么我的种子失败了:?谢谢!

【问题讨论】:

  • 不是 100% 确定,但我认为这可能是您提供的路径不正确。试试:meal_avatar: File.new(Rails.root.join("app", "assets", "images", "salad.jpg"))
  • 没用。得到同样的错误。不过谢谢你:)
  • 你遇到了什么错误?
  • 和之前一样 ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: 列饭菜.meal_avatar 不存在
  • 尝试重启服务器?另外,你在哪里使用meal_seed(你有find_or_create_by(meal_params))?

标签: ruby-on-rails paperclip seed


【解决方案1】:

这与find_or_create_by 有关。我相信这个发现发生在回形针对象被处理之前,这就是它试图寻找列meal_avatar的原因。

将它们分成两行。

meal_seed.each do |meal_params|
  avatar = meal_params.delete(:meal_avatar)
  meal = category.meals.find_or_initialize_by(meal_params)
  meal.meal_avatar = avatar

  meal.save
end

【讨论】:

  • 成功了!谢谢。
【解决方案2】:

试试这个,它可能对你有用!

meal_seed.each_with_index do |meal_params, index|
  Meal.create!(meal_params)  
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2015-04-08
    • 1970-01-01
    • 2012-01-15
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多