używam "Szyny konsoli", a następnie polecenie:Dane nie wprowadzając sqlite bazy danych - Ruby on Rails
User.create(name:"John", email:"[email protected]", password:"foo", password_confirmation:"foo")
i uzyskać to:
(0.1ms) begin transaction
User Exists (0.2ms) SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
(0.1ms) rollback transaction
=> #<User id: nil, name: "John", email: "[email protected]", created_at: nil, updated_at: nil, password_digest: "$2a$10$mY0/9RgjwOU46ZYcSC0TFOCMxrPiqWTEHWe1K27O/3Ya...">
kiedy sprawdzić plik baza danych sqlite za pomocą przeglądarki SQLite Database Nie widzę nic.
tutaj jest mój model użytkownik:
class User < ActiveRecord::Base
#these attributes can be modified by the users
attr_accessible :name, :email, :password, :password_confirmation
#ruby's way of calling a method below...
has_secure_password
#validation testing
validates :name, presence: true, length: { maximum: 50 }
#regular expression (there is an official one)
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
#and add it..
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
#validate password
validates :password, length: {minimum: 6}
validates :password_confirmation, presence: true
end
dlaczego nie dane wpisane w mojej bazy danych?
Otrzymuję ten błąd przy każdym wejściu!
to na przykład:
1.9.3p125 :005 > User.create(name:"Smith", email:"[email protected]", password:"foo", password_confirmation:"foo")
(0.1ms) begin transaction
User Exists (0.1ms) SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
(0.0ms) rollback transaction
=> #<User id: nil, name: "Smith", email: "[email protected]", created_at: nil, updated_at: nil, password_digest: "$2a$10$6nzyRJ0IplI6B4bSoQEtUOIcrbFVl1ix3EAKPGJZjZQf...">
nigdy nie wszedł użytkownika Smith z tego e-maila, a ja wciąż się, że „Użytkownik nie istnieje”!
EDYTOWANIE:
Dostałem błąd. Limit hasło jest 5 Byłem wprowadzeniu hasła 3-literowy więc kiedy wpisz:
User.create(name:"Smith", email:"[email protected]", password:"foobar", password_confirmation:"foobar")
(0.1ms) begin transaction
User Exists (0.2ms) SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
Binary data inserted for `string` type on column `password_digest`
SQL (1.7ms) INSERT INTO "users" ("created_at", "email", "name", "password_digest", "updated_at") VALUES (?, ?, ?, ?, ?) [["created_at", Mon, 12 Mar 2012 00:16:42 UTC +00:00], ["email", "[email protected]"], ["name", "Smith"], ["password_digest", "$2a$10$v/FqAuUPpbdIJ44jVHxbKOJt/uoBTJVkP4KIhzJHNcF8rWPFfKusi"], ["updated_at", Mon, 12 Mar 2012 00:16:42 UTC +00:00]]
(266.9ms) commit transaction
=> #<User id: 1, name: "Smith", email: "[email protected]", created_at: "2012-03-12 00:16:42", updated_at: "2012-03-12 00:16:42", password_digest: "$2a$10$v/FqAuUPpbdIJ44jVHxbKOJt/uoBTJVkP4KIhzJHNcF8...">
I działa, ale ja wciąż dostać ten dziwny użytkownik istnieje błąd ... Jakieś pomysły?
Wygląda na to masz już użytkownikowi email 'testowej @ email.com' więc': uniqueness' walidacji e-mail jest wadliwa. – pjumble
edytowałem moje pytanie –
Jakie wyjście otrzymasz, jeśli wykonasz: 'user = User.new (nazwa:" Smith ", email:" [email protected] ", hasło:" foo ", password_confirmation:" foo ")' a następnie: 'puts user.errors'? – pjumble