2012-03-26 3 views
4

저는 레일을 처음 사용하기 때문에 콘솔에 약간의 문제가 있습니다. 내 Users 테이블에 레코드를 추가하고 일부 기능을 테스트하고 싶습니다. 그러나 언제든지 User.create 또는 유사한 기능을 수행하면 성공적으로 완료된 다음 즉시 롤백됩니다. 즉시 롤백을 방지하려면 어떻게합니까?DB 콘솔에서 레일스 콘솔이 즉각적인 롤백을 수행하지 못하게하려면 어떻게해야합니까?

샌드 박스 모드가 아닙니다.

다음은 사용자를 생성 할 때 콘솔에 출력되는 내용입니다. 그것은 사용자가 존재한다고 말한 다음 즉시 트랜잭션을 롤백합니다. 그런 다음 트랜잭션이 실제로 롤백 된 것을 보여주기 위해 User.all을 실행합니다.

>>> User.create(first_name: "derek", last_name: "harrington", email: "[email protected]") 
(0.1ms) begin transaction 
User Exists (0.2ms) SELECT 1 FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
(0.1ms) rollback transaction 
=> #<User id: nil, first_name: "derek", last_name: "harrington", email: "[email protected]", password_digest: nil, credit_card_id: nil, address_id: nil, created_at: nil, updated_at: nil> 
>>> User.all 
User Load (0.3ms) SELECT "users".* FROM "users" 
=> [] 

어떻게 이러한 변경 사항을 영구히 유지하고 롤백을 방지합니까?

편집 : 여기

User 모델 이상한

class User < ActiveRecord::Base 
    attr_accessible :first_name, :last_name, :email, :password, :password_confirmation 
    has_secure_password 

    validates :first_name, presence: true, length: { maximum: 50 } 
    validates :last_name, presence: true, length: { maximum: 50 } 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, 
        format:  { with: VALID_EMAIL_REGEX }, 
        uniqueness: true 
    validates :password, confirmation: true, length: { minimum: 6, maximum: 50 } 
    validates :password_confirmation, presence: true 
end 
+1

'User' 모델의 내용을 게시하십시오. 'User.create'의 결과를 변수에 할당해야 에러를 확인할 수 있습니다. – James

+0

제안한대로 변수에 결과를 지정했는데 변수에서 예상대로 작동하는 것 같습니다. 그것은 단지 데이터베이스에 머 무르지 않을 것입니다. –

+4

그건 그냥 저장되지 않은'User' 인스턴스입니다. 요점은 그 에러를 체크하는 것입니다. 변수'user'에 가지고 있다면'user.errors'에서 얻은 것을 확인하십시오. – James

답변

4

암호 확인을 제공하지 않아서 저장하지 않은 것 같습니다.

0

의 내용입니다.

일부 구성 옵션을 추가 했습니까? 그렇다면 더 잘 검토하십시오.

아주 간단한 레일 앱을 사용해 동작을 확인할 수도 있습니다.

관련 문제