2016-01-21 2 views
0

У меня небольшое затруднительное положение.Создание строк и столбцов из Rails Console

У меня есть таблица, называемая пользователями. У пользователей таблицы есть связь с другой таблицей, называемой уведомлением пользователя. Вот миграция таблицы пользователя:

create_table "user_notifications", force: :cascade do |t| 
    t.belongs_to :user 
    t.integer "other_user" 
    t.integer "unseen_count", default: 0 
    t.datetime "created_at",     null: false 
    t.datetime "updated_at",     null: false 
    end 

Проблема заключается в том, что при создании нового пользователя, то таблица заполняется ряд нового пользователя. Как добавить строку всем существующим пользователям. Это необходимо для функции приложения. Также я использую шпатлевку для подключения к серверу, поэтому единственным инструментом, который у меня есть, является консоль рельсов.

Пример: У меня 60 пользователей. Как это сделать, чтобы все 60 пользователей получили строку в новой таблице с помощью консоли rails.

Редактировать: Это метод, который я использую всякий раз, когда пользователь зарегистрирован. Могу ли я использовать этот метод в консоли rails или создать отклонение от этого?

user.rb:

after_create :create_user_notification  

def create_user_notification 
    UserNotification.create(:user_id => self.id) 
end 

Спасибо заранее.

+0

Что вы подразумеваете под 'Как добавить строку всем существующим пользователям? – bjhaid

+0

As In У меня 60 пользователей. Новая таблица имеет отношение к пользовательской таблице. Как создать строку для всех 60 пользователей. Извините за то, что вы не поняли – Jakxna360

+0

Откуда вы знаете, что хотите связать с этими пользователями, должен быть внешний ключ, который идентифицирует, какой пользователь владеет той строкой в ​​новой таблице, ваш вопрос остается неопределенным после редактирования. – bjhaid

ответ

1

Если вы правильно поняли, что хотите добавить уведомление к каждой записи пользователя.

Учитывая, что у вас есть модели, которые выглядят примерно так:

class User 
    has_many :user_notifications 
end 

class UserNotification 
    belongs_to :user 
end 

Чтобы вставить запись для каждого пользователя, вы могли бы сделать что-то вроде этого:

User.all.find_in_batches(batch_size: 10).each do |u| 
    u.user_notifications.create(message: 'Hello dear') 
end 

.find_in_batches не может действительно важно, если вы имеют 60 записей, но если у вас есть 60 000, ваш сервер будет исчерпан.

+0

Спасибо, быстрый вопрос. Включить ли я это в новую миграцию или консоль рельсов? – Jakxna360

+0

Я бы сделал это в консоли, так как миграция действительно предназначена только для изменения схемы базы данных, и это одноразовая задача. – max

+0

Еще раз спасибо за помощь. Я получаю эту ошибку 'undefined method assert_valid_keys 'для 10: Fixnum' – Jakxna360

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