Rails - 使用回形针图像播种
Rails - seeding with paperclip images
我发现了几个关于该主题的问题,并按照说明为我的模型播种图像。但是,播种时我收到错误 "PG::UndefinedColumn: ERROR: column meals.meal_avatar does not exist",即使我的模型有错误。这是我的膳食模型
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
知道为什么我的种子失败了:?谢谢!
这与 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
试试这个,它可能适合你!
meal_seed.each_with_index do |meal_params, index|
Meal.create!(meal_params)
end
我发现了几个关于该主题的问题,并按照说明为我的模型播种图像。但是,播种时我收到错误 "PG::UndefinedColumn: ERROR: column meals.meal_avatar does not exist",即使我的模型有错误。这是我的膳食模型
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
知道为什么我的种子失败了:?谢谢!
这与 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
试试这个,它可能适合你!
meal_seed.each_with_index do |meal_params, index|
Meal.create!(meal_params)
end