2016-06-07 3 views
0

그 주제에 대한 몇 가지 질문을 발견했으며 지침에 따라 이미지가있는 모델을 시드했습니다. 그러나 시딩 할 때 "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 

내 씨앗이 실패하는 이유는 무엇입니까? 고맙습니다!

+1

100 % 확신 할 수는 없지만 제공하신 경로가 잘못되었을 수 있습니다. 시도해보십시오 :'meal_avatar : File.new (Rails.root.join ("app", "assets", "images", "salad.jpg")) – DickieBoy

+0

작동하지 않았습니다. 같은 오류가 발생했습니다. 그래도 고마워. :) –

+0

어떤 오류가 나고 있니? – DickieBoy

답변

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 
+0

Worked! 고맙습니다. –

0

시도해보십시오!

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