Tạo người dùng phát minh từ bảng điều khiển Ruby


146

Bất kỳ ý tưởng nào về cách tạo và lưu một đối tượng Người dùng mới với phát minh từ bảng điều khiển ruby?

Khi tôi cố gắng cứu nó, tôi luôn luôn sai. Tôi đoán tôi đang thiếu một cái gì đó nhưng tôi không thể tìm thấy bất kỳ thông tin liên quan.


1
Không phải là câu trả lời cho câu hỏi của bạn và có lẽ bạn đã biết về Railcasts, nhưng tôi thấy những video này hữu ích khi tìm hiểu về Devise: railscasts.com/episodes/209-int Giới thiệu-devise , railscasts.com/episodes/210-customizing-devise . Họ cũng có một vài video thực sự hữu ích về Devise trên đó. Chúc may mắn.

2
Phải tôi đã xem cả hai, nhưng họ không nói gì về những gì tôi đang hỏi.
Martin

Câu trả lời:


197

Bạn có thể thêm false vào phương thức lưu để bỏ qua các xác nhận nếu bạn muốn.

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

Nếu không tôi sẽ làm điều này

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

Nếu bạn đã confirmablebật mô-đun cho phát minh, hãy đảm bảo bạn đang đặt confirmed_atgiá trị thành thứ gì đó giống như Time.nowtrong khi tạo.


51
Có vẻ như lưu (sai) đã được xử lý, bây giờ nên lưu (: xác thực => sai)
Martin

9
có quá nhiều phép thuật xảy ra ở đây .. Mô hình Người dùng mở rộng Active Record. Làm thế nào đến phương pháp tạo được overriden. Mật khẩu được mã hóa ở đâu?
codeAnand

2
Cuộc gọi phát minh thực sự làm gì
codeAnand

Có vẻ như một cách làm sai. Cách xác thực cưỡng bức này (hoặc bỏ qua xác thực) sẽ không đặt mật khẩu_password, do đó làm cho bản ghi này trở nên vô dụng trong ứng dụng thực.
VPaul

79

Bạn sẽ có thể làm điều này bằng cách sử dụng

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

Nếu điều này trả về sai, bạn có thể gọi

u.errors

để xem những gì đã đi sai.


17
Nếu bạn sử dụng: có thể xác nhận, đừng quên đặt thuộc tính: Confirm_at thành Time.now để bạn có thể đăng nhập ngay lập tức.
David Sulc

9
Như một phím tắt, nếu bạn đang sử dụng Confirmable, cuộc gọiu.confirm!
captainpete

30

Khi trên mô hình của bạn có: tùy chọn có thể xác nhận, điều này có nghĩa là người dùng đối tượng nên được xác nhận trước. Bạn có thể làm hai cách để cứu người dùng.

a. đầu tiên là bỏ qua xác nhận:

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

b. hoặc sử dụng xác nhận! :

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

6

Nếu bạn muốn tránh gửi email xác nhận , lựa chọn tốt nhất là:

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

    u.confirm
    u.save

Vì vậy, nếu bạn đang sử dụng email giả hoặc không có kết nối internet, điều đó sẽ tránh được các lỗi.


Cập nhật: confirm!giờ chỉ làconfirm
Shadow Radiance

2

Không có câu trả lời nào ở trên làm việc cho tôi.

Đây là những gì tôi đã làm:

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

Hãy nhớ rằng mật khẩu phải lớn hơn 6 ký tự.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.