我在seeds.rb
文件中手动播种数据库。我有类似以下内容:
# Users
puts 'SETTING UP DEFAULT USER LOGIN'.colorize( :color => :light_blue, :background => :green )
chris = User.create(:email => "asdf@asdf.com", :password => "asdfasdf", :password_confirmation => "asdfasdf").save!
teacher1 = User.create(:email => "t1@asdf.com", :password => "asdfasdf", :password_confirmation => "asdfasdf").save!
student1 = User.create(:email => "s1@asdf.com", :password => "asdfasdf", :password_confirmation => "asdfasdf").save!
稍后,我创建了一些歌曲,并希望将它们分配给用户:
# Songs
puts 'SETTING UP DEFAULT SONGS'.colorize( :color => :white, :background => :black )
songs1 = Song.create( title: 't1', content: 'c1', :user_id => chris.index ).save!
songs2 = Song.create( title: 't2', content: 'c2', user_id: chris.index ).save!
songs3 = Song.create( title: 't3', content: 'c3', user_id: chris:index ).save!
songs4 = Song.create( title: 't4', content: 'c4', :user_id => chris.id ).save!
您会注意到列user_id
有三种不同的尝试,所有这些尝试都失败了。
如何使用我为其分配的变量[chris
,t1
和s1
]插入我之前创建的用户的唯一索引?
API只讨论如何手动或使用循环。
答案 0 :(得分:3)
您的问题是.save!
方法。它返回布尔值,这就是为什么chris
,teacher1
和student1
是布尔值而不是objects
的原因。您不需要save!
,因为create
也会将记录保存在数据库中,并返回该对象。
从每行中删除.save!
并使用.id
,您就会很好。