所以我有一个用户模型和一个相应的表(用户),其中包含以下字段:User_id、用户名、密码等。
但后来我将invitation_limit 添加到用户表中。新创建的用户具有invitation_limit,但是在运行invitation_token 迁移之前创建的用户没有invitation_limit 字段。
如何更新之前创建的用户以包含invitation_token 字段?请注意,我不是在谈论向用户表添加invitation_limit 字段(即迁移),而是更新已创建的用户。
谢谢
最佳答案
不应将种子数据放入迁移中。迁移是为了创建结构,而不是添加数据,如果移动数据库,您就会遇到问题。
您可以编写一个 rake 任务。如果您创建一个名为“generate_invitation_token”的实例方法,则可以编写如下的 rake 任务:
# lib/tasks/invitation_tokens.rake
namespace :seed do
desc "generate invitation tokens for users that don't have one already"
task :user_tokens => :environment do
User.all(:conditions => {:invitation_token => nil}).each do |user|
user.generate_invitation_token
end
end
end
然后您可以从命令行调用 rake 任务,如下所示:
rake seed:user_tokens
这是一种更简洁的方法。
更新
我在一篇名为“Adding Columns and Default Data To Existing Models”的博文中扩展了这个答案。
关于mysql - 将新字段添加到预先存在的表中并修改先前在 Rails 中创建的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130702/