2017-02-23 69 views
0

我想用4个用户种子数据库。每个用户拥有has_one个人资料和has_many todo_lists。 用户模式:种子数据库rails belongs_to

class User < ActiveRecord::Base 
    has_one :profile, dependent: :destroy 
    has_many :todo_lists, dependent: :destroy 
    has_many :todo_items, through: :todo_lists, source: :todo_items 
end 

这里是我的种子文件

User.destroy_all 

user_list = [ 
    ["Carly", "Fiorina", "female", 1954], 
    ["Donald", "Trump", "male", 1946], 
    ["Ben", "Carson", "male", 1951], 
    ["Hillary", "Clinton", "female", 1947] 
] 

user_list.each do |fname, lname, gender, byear| 
    { 
     User.create!(username: lname, password_digest: "xyz") 
     User.profile.create! (first_name: fname, last_name: lname, gender: gender, birth_year: byear) 
     User.todo_list.create!(list_name: "temp", list_due_date: 1.year.from_now); 
    } 
end 

,我发现了错误意想不到的TLabel指向用户名:L-NAME。我创建用户表的迁移过程如下:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :password_digest 

     t.timestamps null: false 
    end 
    end 
end 

回答

1

不应该在do-end块中使用括号。试试这个:

user_list.each do |fname, lname, gender, byear| 
    user = User.create!(username: lname, password_digest: "xyz") 
    user.create_profile!(first_name: fname, last_name: lname, gender: gender, birth_year: byear) 
    user.todo_lists.create!(list_name: "temp", list_due_date: 1.year.from_now); 
end 
+0

是的,这是真的谢谢你的收获。我认为问题可能是我无法通过用户创建配置文件。也许我必须创建一个配置文件,然后将其分配给用户? – leenyburger

+0

您需要创建用户实例的配置文件和todo_lists,而不是用户类。我已经更新了我的答案以反映这一点。请记住,您的Profile和TodoList模型应该有一个外键将它们链接回给用户。 – eiko

+0

现在我得到一个NoMethodError未定义的方法创建! – leenyburger

相关问题