2014-01-11 2 views

ответ

27

простое решение: консоль, вероятно, имеет подключение к базе данных, но сообщает, что он не делает.

Чтобы узнать, правда ли это, сделайте запрос в консоли.

User.count 

Это установило ложное положительное предупреждение для меня и коллеги.

или

Использование Model.connection для установления соединения.

+0

Вы должны принять свой собственный ответ, если проблема решена , –

+0

уверен, что только я могу принять его за 2 дня – ben

+0

Спасибо за решение – akbarbin

3

Это не проблема. Все, что происходит, это соединение не создается, пока оно не понадобится.

+0

Вот что я подумал. Благодарю. –

71

Это связано с тем, что ActiveRecord установил соединение лениво, начиная с 4.0. Только не беспокойтесь об этом.

После того, как он будет установлен в первый раз, вы увидите ожидаемый результат. Попробуйте это:

2.1.4 :001 > User 
# => User (call 'User.connection' to establish a connection) 

2.1.4 :001 > User.count 
# => SELECT COUNT(*) FROM "users" ... 

2.1.4 :001 > User 
# => User(id: integer, email: string, encrypted_password: string, ...) 
+0

Как вы * не * лениво создаете ваше соединение? Какие преимущества у этого есть? – Trip

+0

@Trip Я предполагаю, что он сохраняет память в приложении. Зачем загружать то, что вы не использовали в памяти, справляйтесь с ним, когда придет время. – icantbecool

+0

сэкономил мое время. Большое спасибо – Agnes

5

Чтобы восстановить поведение модели ActiveRecord, отображающих их информацию столбца сразу после того, как консоль загрузится, вот один обходной путь:

# config/application.rb 
console do 
    ActiveRecord::Base.connection 
end 
+0

Это автоматизирует процесс приятный – Magnum

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