Ruby 콘솔에서 고안 사용자 생성


146

루비 콘솔에서 고안 한 새로운 User 객체를 생성하고 저장하는 방법에 대한 아이디어가 있습니까?

저장하려고 할 때 항상 거짓이됩니다. 뭔가 빠졌지 만 관련 정보를 찾을 수 없습니다.


1
귀하의 질문에 대한 답변이 아니며 아마도 Railcasts에 대해 이미 알고 있지만 Devise에 대해 배울 때이 비디오가 유용하다는 것을 알았 습니다 : railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . 그들은 거기에 Devise에 대한 몇 가지 더 유용한 비디오가 있습니다. 행운을 빕니다.

2
응, 둘 다 지켜 봤지만 내가 묻는 것에 대해 아무 말도하지 않습니다.
Martin

답변:


197

원하는 경우 저장 메소드에 false를 추가하여 유효성 검증을 건너 뛸 수 있습니다.

User.new({:email => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

그렇지 않으면 나는 이것을 할 것이다

User.create!({:email => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" })

confirmable고안을 위해 모듈을 활성화 한 경우 생성하는 동안 confirmed_at값을 비슷한 값으로 설정해야합니다 Time.now.


51
save (false)가 depcreated 된 것 같습니다. 이제 save (: validate => false) 여야합니다.
Martin

9
여기서 너무 많은 마술이 일어나고 있습니다. 사용자 모델은 Active Record를 확장합니다. 어떻게 create 메소드를 재정의합니까? 비밀번호는 어디에서 암호화됩니까?
codeAnand

2
고안 호출은 실제로 무엇을 하는가
codeAnand

잘못된 방법으로 보입니다. 이 방법으로 강제 유효성 검사 (또는 유효성 검사 건너 뛰기)는 encrypted_password를 설정하지 않으므로이 레코드를 실제 앱에서 쓸모 없게 만듭니다.
VPaul

79

당신은 이것을 사용하여 이것을 할 수 있어야합니다

u = User.new(:email => "user@name.com", :password => 'password', :password_confirmation => 'password')
u.save

이것이 false를 반환하면

u.errors

무엇이 잘못되었는지 확인하십시오.


17
: confirmable을 사용하는 경우 : confirmed_at 속성도 Time.now로 설정해야 즉시 로그인 할 수 있습니다.
David Sulc

9
바로 가기로, 당신이 사용하는 경우 Confirmable, 전화u.confirm!
captainpete

30

모델에 : confirmable 옵션이 있으면 객체 사용자를 먼저 확인해야합니다. 두 가지 방법으로 사용자를 저장할 수 있습니다.

ㅏ. 먼저 건너 뛰기 확인입니다.

newuser = User.new({email: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

비. 또는 확인을 사용하십시오! :

newuser = User.new({email: 'superadmin2@testing.com', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save

6

확인 이메일을 보내지 않으 려면 최선의 선택은 다음과 같습니다.

    u = User.new({
      email: 'demo@greenant.com.br',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

따라서 가짜 이메일을 사용하거나 인터넷에 연결되어 있지 않으면 오류가 발생하지 않습니다.


업데이트 : confirm!이제 막confirm
Shadow Radiance

2

위의 답변 중 어느 것도 나를 위해 일하지 않았습니다.

이것이 내가 한 일입니다.

User.create(email: "a@a.com", password: "asdasd", password_confirmation: "asdasd")

비밀번호는 6 자보다 커야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.