i created users model in rails 4.1.8 application attributes email , password. fired rails console, user = user.new(email: "user@example.com" , password: "example") work user.save saves password , omits email. below model, migrated database file , rails console log.
user model
class user < activerecord::base before_save {self.email = email.downcase! } valid_email_regex = /\a[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format:{with: valid_email_regex}, uniqueness: { case_sensitive: false } has_secure_password validates :password, presence: true, length: { minimum: 6 } end database file (for user)
class createusers < activerecord::migration def change create_table :users |t| t.string :email, unique: true t.string :password_digest t.timestamps null: false end end end rails console log
<r.new(email: "user@example.com" , password: "example") => #<user id: nil, email: "user@example.com", password_digest: "$2a$10$jxwd/orit z2hklhk4b4nf.p.dwb6s35yto.ebywup0i...", created_at: nil, updated_at: nil> irb(main):008:0> user.save (1.0ms) begin user exists (1.0ms) select 1 one `users` `users`.`email` = 'user@example.com' limit 1 sql (46.0ms) insert `users` (`created_at`, `password_digest`, `updated_at`) values ('2015-07-20 20:54:35', '$2a$10$jxwd/oritz2hklhk4b4nf.p.dwb6s35yto.eb ywup0i.gmtolsnka', '2015-07-20 20:54:35') (89.1ms) commit => true users controller
class userscontroller < applicationcontroller def new end private def user_params params.require(:user).permit(:email) end end looking @ log email parameter not inserted into; please, appreciated.
try following in user model:
before_save {self.email = email.downcase } # no "!" downcase! edits variable on called , not return downcased string unless there downcase (i.e., if use on lower-case email, returns nil , based on console output, happening). downcase alone should fine.
Comments
Post a Comment