我想用测试数据填充我的数据库,我的用户和个人资料模型彼此分开,形式为1:1。我正在运行的脚本会创建数据但不会将它们关联在一起。我如何将它与数据相关联?
应用程序/模型/ user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :profile
attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_attributes
accepts_nested_attributes_for :profile
end
应用程序/模型/ profile.rb
class Profile < ActiveRecord::Base
belongs_to :user
attr_accessible :first_name, :last_name
validates :first_name, presence: true
validates :last_name, presence: true
端
LIB /任务/ sample_data.rb
namespace :db do
desc "Fill database with sample data"
task populate: :environment do
User.create!(email: "dufall@iinet.net.au",
password: "123qwe",
password_confirmation: "123qwe")
Profile.create!(first_name: "Aaron",
last_name: "Dufall")
99.times do |n|
first_name = Forgery::Name.first_name
Last_name = Forgery::Name.last_name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(email: email,
password: password,
password_confirmation: password)
Profile.create!(first_name: first_name,
last_name: Last_name)
end
end
end
答案 0 :(得分:0)
尝试使用user.create_profile!而不是Profile.create!
namespace :db do
desc "Fill database with sample data"
task populate: :environment do
user = User.create!(email: "dufall@iinet.net.au",
password: "123qwe",
password_confirmation: "123qwe")
user.create_profile!(first_name: "Aaron",
last_name: "Dufall")
99.times do |n|
first_name = Forgery::Name.first_name
Last_name = Forgery::Name.last_name
email = "example-#{n+1}@railstutorial.org"
password = "password"
user = User.create!(email: email,
password: password,
password_confirmation: password)
user.create_profile!(first_name: first_name,
last_name: Last_name)
end
end
end