Lỗi gem bcrypt
HI mọi người,
Hiện mình có sử dụng gem bcrypt để lưu và mã hóa mật khẩu. Mọi việc diễn ra đều bình thường thì nay mình có vô tình quên truyền tham số password_confirmation, nhưng record vẫn được lưu vào database.
Nếu truyền password_confirmation có nội dung khác với params password thì chương trình không thể lưu record đó. Nhưng nếu không truyền luôn field password_confirmation mà chỉ truyền mình field password thì chương trình save data bình thường. mình không hiểu được đây là lý do vì sao, mong mọi người gợi ý giúp mình. mình xin cảm ơn.
1 CÂU TRẢ LỜI
password_confirmation
là option attribute, không bắt buộc, nên nếu params bạn gửi lên có trường password_confirmation
thì sẽ gọi đến validate và tất nhiên phải match với trường password
và ngược lại trong trường hợp không cần nhập password_confirmation
thì có thể bỏ qua, record vẫn save bình thường.
Chi tiết bạn có thể tham khảo:
https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html
oh, thanks bạn nhiều, mình đã hiểu được vấn đề, cảm ơn bạn
bạn có thể show code phần đó ra được không ?
@HuyDQ đây bạn ơi mình dùng chỉ cơ bản như này thôi
Bạn thử restart lại sever coi sao. Nếu không thì bạn post cái lỗi nó báo trong trường hợp này lên mình xem thử: "Nếu truyền password_confirmation có nội dung khác với params password thì chương trình không thể lưu record đó". Không thể lưu là có báo lỗi gì ở giao diện không? Nếu không có ở giao diện thì ở console Terminal chắc chắn có đó.
"password_confirmation có nội dung khác với params password thì chương trình không thể lưu record đó" ủa mình không hiểu password với password confirm khác nhau vì sau bạn muốn lưu lẽ ra phải báo lỗi "confirmation password do not match" chứ bạn bạn in error messages ra xem có lỗi validate đó ở trong đó không
@namdp06 À cái này là lỗi diễn đạt của mình, issue của mình đơn giản như này thôi:
Mình code api, nên mình dùng postman để test. Và khi đó thì nếu mình không gửi field password_confirmation thì chương trình vẫn work bình thường(nó không bắt lỗi thiếu field password_confirmation).