2012-05-02 2 views
2

내가 (루비 온 레일즈의 튜토리얼에서) 내 루비 레일에 응용 프로그램에 트위터 인증을 통합하기 위해 노력했다. 레이크 중단되었습니다 : 잘못된 인수 번호 (1 0)

은 결과적으로 나는 테이블 (사용자 테이블) 하락하고 다시했다. 이제 데이터베이스를 채우려 나는

namespace :db do 
    desc "Fill database with sample data" 
    task populate: :environment do 
    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) 
    end 
    end 
end 

다음 명령이 작동 테이블을 채우기 위해이 코드를 가지고 :

$bundle exec rake:db migrate 
$bundle exec rake:db reset 

는 $ 번들 간부 레이크 그러나 : DB를 채우기가 작동하지 않습니다. 이 문제에 어떤 도움에 감사드립니다

$ bundle exec rake db:populate --trace 
    ** Invoke db:populate (first_time) 
    ** Invoke environment (first_time) 
    ** Execute environment 
    ** Execute db:populate 
    rake aborted! 
    wrong number of arguments (0 for 1) 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/devise-2.0.4/lib/devise/models/database_auth 
    enticatable.rb:105:in `password_digest' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb 
    :254:in `block in add_on_blank' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb 
    :253:in `each' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/errors.rb 
    :253:in `add_on_blank' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio 
    ns/presence.rb:9:in `validate' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:310:in `_callback_before_39' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:484:in `_run__584816360__validate__204154762__callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:405:in `__run_callback' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:385:in `_run_validate_callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:81:in `run_callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio 
    ns.rb:212:in `run_validations!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio 
    ns/callbacks.rb:53:in `block in run_validations!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:425:in `_run__584816360__validation__204154762__callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:405:in `__run_callback' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:385:in `_run_validation_callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activesupport-3.2.0/lib/active_support/callb 
    acks.rb:81:in `run_callbacks' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio 
    ns/callbacks.rb:53:in `run_validations!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validatio 
    ns.rb:179:in `valid?' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat 
    ions.rb:69:in `valid?' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat 
    ions.rb:77:in `perform_validations' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat 
    ions.rb:56:in `save!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/attribu 
    te_methods/dirty.rb:33:in `save!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac 
    tions.rb:246:in `block in save!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac 
    tions.rb:295:in `block in with_transaction_returning_status' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/connect 
    ion_adapters/abstract/database_statements.rb:190:in `transaction' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac 
    tions.rb:208:in `transaction' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac 
    tions.rb:293:in `with_transaction_returning_status' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/transac 
    tions.rb:246:in `save!' 
    c:/Ruby193/lib/ruby/gems/1.9.1/gems/activerecord-3.2.0/lib/active_record/validat 
    ions.rb:41:in `create!' 
    c:/tuffy/shopgodt/lib/tasks/sample_data.rake:4:in `block (2 levels) in <top (req 
    uired)>' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:205:in `call' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:200:in `each' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:200:in `execute' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain' 
    c:/Ruby193/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
    c:/Ruby193/lib/ruby/1.9.1/rake/task.rb:144:in `invoke' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_lev 
    el' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `each' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handlin 
    g' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:88:in `top_level' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:66:in `block in run' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handlin 
    g' 
    c:/Ruby193/lib/ruby/1.9.1/rake/application.rb:63:in `run' 
    c:/Ruby193/bin/rake:32:in `<main>' 
    Tasks: TOP => db:populate 

:

내가 점점 오전 오류가 있습니다. 다시 한 번 감사드립니다!

============================================== ==============

업데이트 05/02/2012 : 제 3 자 로그인 (페이스 북, 트위터)을 추가하고 싶었 기 때문에 Devise gem을 추가했지만 어느 것이 확실하지 않습니다 나는 모든 것이 잘 실행을 주석 처리하면 명령 나는 그것이 내 응용 프로그램/모델에 추가 된이 두 줄의 결과 실행/User.rb는

:token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

파일. 이 두 줄이 무엇을하고 있는지 이해하고 싶습니다. 그것은 User 클래스 자체에 뭔가가 될 수 있었던 것처럼

답변

3

c:/tuffy/shopgodt/lib/tasks/sample_data.rake:4:in 'block (2 levels) in <top (required)>'

당신이

c:/Ruby193/lib/ruby/gems/1.9.1/gems/activemodel-3.2.0/lib/active_model/validations/presence.rb:9:in 'validate'

와 결합 create!

에 대한 호출 인 라인 4의 지시 뭐가 잘못에 두 개의 힌트가 있습니다 것은라고하는 유효성 검사에 실패했습니다. 제공하지 않는 일부 필드의 존재를 예상하는 유효성 검사가 있습니까? User 모델을 확인하십시오. validates :some_field_name, :presence => true

+0

안녕하세요 @ TCopple 응답 주셔서 감사합니다! 내 사용자 테이블에 ID, 전자 메일, created_at, updated_at, password_digest, remember_token, admin 필드가 있습니다. 사용자 모델에서 코드 : 이'는 {respond_to한다 (이름)} 는 {respond_to한다 (: 이메일을)} 를가 {respond_to한다 (: password_digest)} 를가 {respond_to한다 (: 암호)} 그것을 { respond_to한다 (:도 인증)} 를 그 {respond_to한다 (: password_confirmation)} 그것이 {respond_to한다 (: remember_token)} 을 {respond_to한다 (: 관리자)} 을 {respond_to한다 (: 인증 용)} 을 { be_valid} it {should_not be_admin} ' – Rubygirl

+0

두 가지가 있습니다. 1) 정보를 추가 할 때 원래 게시물에 코드를 넣어서 모든 사람이 그 정보를 알 수 있도록하십시오. 2) 실제 모델 자체가 아닌'User' 모델의 테스트 케이스처럼 보입니다. 'app/models/user.rb'의 내용 게시 – TCopple

+0

안녕하세요, TCopple 저는 잘못된 코드를 붙여 넣은 것을 깨달았습니다. 나는 Devise를 추가했고 어떤 명령 행을 실행했는지 모르지만 내 사용자 모델에는 두 개의 추가 행이 있습니다. 나는 그들을 원래 게시물에 붙이고있다. – Rubygirl

2

는 것 같습니다. 가능성이 있음.

당신이 거기 또는 다른 사용자 정의 콜백에서 사용자 지정 유효성 검사를 가지고 있나요? 그것들을 점검 할 가치가있을 것입니다.

콘솔에서 rake 작업과 독립적으로 User.create!을 수행하여 문제인지 확인할 수 있습니다.

+0

안녕하세요 Shadwell ... 웹 페이지를 통해 사용자를 만들려고했는데 동일한 오류가 발생했습니다. – Rubygirl

2

확인 - 동일한 문제가있었습니다. 나는 방금 같은 튜토리얼을 마치고 지난 3 시간 동안 내 머리카락을 꺼내 ​​보냈다. 보석 코드를 통해 모든 것이 나를 깨닫게 했어.

ch.6에서 튜토리얼 사용자 모델에 'has_secure_password'에 추가하도록 요청 :

무슨 일인지 것은 이것이다. Devise에서 사용중인 모든 모델에서이 헬퍼를 제거하십시오.Devise는 명시 적으로 Gem에서 도우미를 호출하지 않지만 코드는 'has_secure_password'가하는 것을 모방합니다.

그런 다음 서버, 레일 콘솔 등을 제거하십시오. 다시 시작하면 인생이 다시 행복해집니다.

관련 문제