从Rails控制台生成行和列

时间:2016-01-21 03:00:30

标签: ruby-on-rails ruby postgresql

我有一个小困境。

我有一个名为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

提前谢谢你。

1 个答案:

答案 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条记录,那么您的服务器将会耗尽内存。