我有一个小困境。
我有一个名为users的表。表用户与另一个称为用户通知的表有关系。以下是用户表的迁移:
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个用户使用rails控制台在新表中获得一行。
编辑:这是我在用户注册时使用的方法。我可以在rails控制台中使用此方法或创建偏差吗?
user.rb:
after_create :create_user_notification
def create_user_notification
UserNotification.create(:user_id => self.id)
end
提前谢谢你。
答案 0 :(得分: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
如果您有60条记录,那么 .find_in_batches
可能并不重要,但如果您有60,000条记录,那么您的服务器将会耗尽内存。