2016-01-21 18 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 

的問題是,當我創建一個新的用戶,則表中填充了新用戶的行。如何將行添加到所有現有用戶。它是應用程序的功能所必需的。另外,我使用putty連接到服務器,因此我擁有的唯一工具是rails控制檯。

例如:我有60個用戶。我如何擁有它,以便所有60個用戶使用導軌控制檯在新表中獲得一行。

編輯:這是我在用戶註冊時使用的方法。我可以在導軌控制檯內使用這種方法嗎?或者創建一個偏差?

user.rb:

after_create :create_user_notification  

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

預先感謝您。

+0

你是什麼意思 '我如何將行添加到所有現有的用戶' – bjhaid

+0

因爲我有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'for 10:Fixnum' – Jakxna360