导轨 - 用回形针图像播种

时间:2016-06-07 13:06:56

标签: ruby-on-rails paperclip seed

我发现了几个关于该主题的问题,我按照说明为我的模型添加图像。然而,当播种时我得到一个错误“PG :: UndefinedColumn:ERROR:column meals.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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试试这可能对你有用!

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