我刚为我的Devise用户创建了名称,网站,生物等属性的个人资料模型。一切都很好,除了Heroku之外,我已经有100多个用户了,所以1.创建一个新的Profile,2。将它分配给现有用户3.保存,全部都在控制台中相当繁琐。
我不熟悉你可以在Heroku控制台中做什么,如果这是可能的 - 但是我可以为每个现有用户(还没有配置文件)大量创建100多个新配置文件。
现在,任何包含Profile info(即user.profile.name)的视图都会给我一个错误 - 我宁愿创建一个空白配置文件,而不是强制用户在界面中创建一个新配置文件。
Rails 3.2.12
user.rb
class User < ActiveRecord::Base
after_create :build_profile
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :role, :profile_attributes
has_one :profile, dependent: :destroy
accepts_nested_attributes_for :profile
profile.rb
class Profile < ActiveRecord::Base
attr_accessible :bio, :name, :website, :user_id
belongs_to :user
答案 0 :(得分:1)
在heroku上安装rails控制台:
heroku run rails console
另一种解决方案可能是创建迁移CreateProfileForUsers并在部署时将其迁移到您的产品上:
def up
User.all.each do |user|
if user.profile.nil?
user.build_profile
end
end
end
def down
end
修改强>
我刚刚了解到为此使用迁移是一种不好的做法!最好创建一个rake任务来构建您的配置文件,并在部署后立即运行它。
答案 1 :(得分:0)
我在lib / tasks下创建了一个文件add_profile_to_users.rake:
task :add_profile_to_users => :environment do
User.all.each do |u| #where no profile
puts "Updating user id #{u.id}..."
if u.profile.nil?
u.build_profile
else
puts "skip"
end
puts "...#{u.name} has been updated!" if u.save
end
end
我从控制台运行:rake add_profile_to_users
这也适用于heroku。