0

データベースにテストデータを入力したいのですが、ユーザーモデルとプロファイルモデルは1対1の関係で互いに分離されています。私が実行しているスクリプトはデータを作成しますが、それらを相互に関連付けません。データを相互に関連付けるにはどうすればよいですか?

app / models / 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

app / models / 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 / tasks / 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
4

1 に答える 1

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
于 2012-06-17T13:10:29.773 に答える