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