2014-07-03 73 views
0

我目前是邁克爾·哈特爾的教程的第10章,有一個問題,當我嘗試做捆綁高管耙分貝:填充。束EXEC耙分貝:填充 - 的ActiveRecord :: recordinvalid:驗證失敗:電子郵件已經採取

附件是錯誤消息:

rake aborted!                               
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken               
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/validations.rb:57:in `save!'         
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/attribute_methods/dirty.rb:29:in `save!'      
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/transactions.rb:273:in `block in save!'      
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/transactions.rb:329:in `block in with_transaction_returning_st 
atus'                                 
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:211:in `bl 
ock in transaction'                             
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:219:in `wi 
thin_new_transaction'                             
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:211:in `tr 
ansaction'                               
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/transactions.rb:208:in `transaction'       
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/transactions.rb:326:in `with_transaction_returning_status'  
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/transactions.rb:273:in `save!'         
/home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/validations.rb:41:in `create!'         
/home/action/workspace/app3/lib/tasks/sample_data.rake:4:in `block (2 levels) in <top (required)>'         
Tasks: TOP => db:populate                            
(See full trace by running task with --trace)  

附是sample_data.rake文件:

namespace :db do 
    desc "Fill database with sample data" 
    task populate: :environment do 
    admin = User.create!(name: "Example User", 
         email: "[email protected]", 
         password: "foobar", 
         password_confirmation: "foobar", 
         admin: true) 
    User.create!(name: "Example User", 
       email: "[email protected]", 
       password: "foobar", 
       password_confirmation: "foobar") 
    99.times do |n| 
     name = Faker::Name.name 
     email = "example-#{n+1}@railstutorial.org" 
     password = "password" 
     User.create!(name: name, 
        email: email, 
        password: password, 
        password_confirmation: password) 
     users = User.all(limit: 6) 
     50.times do 
     content = Faker::Lorem.sentence(5) 
     users.each { |user| user.microposts.create!(content: content) } 
     end 
    end 
    end 
end 
+1

您正嘗試使用電子郵件[email protected]創建兩個用戶,並對用戶模型進行驗證。只需從rake文件中刪除其中的一個。 –

+0

@Boooo通過rake文件做你的意思是sample_data.rake?或Rakefile? –

回答

3
admin = User.create!(name: "Example User", 
    email: "[email protected]", 
    password: "foobar", 
    password_confirmation: "foobar", 
    admin: true) 

User.create!(name: "Example User", 
    email: "[email protected]", # This email is used to create admin above. 
             # Use another email here 
    password: "foobar", 
    password_confirmation: "foobar") 

該錯誤是從該行

users = User.all(limit: 6) 

活性記錄方法all不接受任何參數。將其更改爲

users = User.limit(6) 
+0

嗨,我這樣做,我得到的參數錯誤:錯誤號arugments(1 0) –

+0

從中行,什麼是在該行的代碼。錯誤消息意味着,您正在調用帶有1個參數的方法,但它沒有期望任何參數。 – Santhosh

+0

這是錯誤! rake中止! 引發ArgumentError:錯誤的參數數目(1 0) /home/action/.gem/ruby/2.0.0/gems/activerecord-4.1.1/lib/active_record/scoping/named.rb:24:in'所有' /home/action/workspace/app3/lib/tasks/sample_data.rake:22:in'在<頂部(必需)>塊(3檔)' /action/workspace/app3/lib/tasks/sample_data.rake :14:在'次' –

0

最有可能的,你已經解決了這個問題,我遇到了這個問題,以及通過添加在模型文件attr_accessible :content或其他attr_accessible解決它。我希望這會幫助別人。

相關問題