2016-05-18 3 views
1

не делать, я сделал небольшой db/seeds.rb файл:грабли БД: семена ничего

web = Website.find_or_create_by(id: 1) do |w| 
    w.website = "http://example.dev/" 
    w.banner_msg = "Hey! Banner message!" 
    w.signup_msg = "Wahey! Sign up message!" 
    w.bg_col = "#333" 
    w.txt_col = "#EEE" 
    w.btn_col = "#999" 
end 

pub = Publisher.find_or_create_by(id: 1) do |p| 
    p.phone = "021 111 1111" 
    p.website = web 
end 

User.find_or_create_by(id: 1) do |u| 
    u.email = '[email protected]' 
    u.password = 'password' 
    u.first_name = 'Joe' 
    u.last_name = 'Bob' 
    u.publisher = pub 
end 

User.create(id: 5, email: "[email protected]") 

Когда я бегу rake db:seed, терминал просто принимает команду и представляет новую линию, не сообщение об ошибке, нет " rake abort! ", ничего.

Когда я проверяю поля в Rails Console, там ничего нет. Что происходит?

+0

Я считаю, что вы делаете это в производственной среде? Попробуйте 'RAILS_ENV = производственный грабли db: seed' в этом случае. – arogachev

+0

@arogachev работает 'rake db: seed' на производстве - это опасно, почему кто-то хочет засеять производственную db поддельными данными? но ваш подход может работать, хотя лучше с помощью RAILS_ENV = development, любые новости @ Mirror318? – bntzio

+0

@ Mirror318 также, попробуйте добавить 'puts 'Создано пользователей: # {User.all.count}", чтобы увидеть, работает ли он и фактически создает пользователей при запуске команды rake. – bntzio

ответ

4

Вы можете использовать find_or_create_by!(attributes, &block), который похож на find_or_create_by, но вызывает create!, поэтому если созданная запись недействительна, возникает исключение. APIDock

0

Ok я узнал, что

1) Цвета ломали, они не могут быть 3 цифры здесь, должен был быть в полной мере 6.

2) Моя цепь отношения были неправильными. У меня user имеет publisher, который имеет website, когда модели были фактически установлены там, где website имеет publisher, который имеет user.

Мое раздражение здесь не было абсолютно никаких сообщений об ошибках. Мне пришлось копировать и вставлять содержимое seeds.rb в Rails Console, тогда все, что он сказал, было rollback, поэтому мне пришлось ввести user.errors, чтобы увидеть ошибки для user, и как мудрые для других моделей.

Есть ли у кого-нибудь предложения по улучшению обратной связи с ошибкой для такого рода ситуаций?

Смежные вопросы