Browse Source

Fix: user email should be null instead of empty string

master
Ilya Konanykhin 8 years ago
parent
commit
45e14a1070
  1. 5
      app/models/user.rb
  2. 15
      db/migrate/20170131164224_user_email_can_be_null.rb
  3. 4
      db/schema.rb

5
app/models/user.rb

@ -54,6 +54,11 @@ class User < ActiveRecord::Base
roles.include?(role)
end
# try keeping the email field in DB clear and consistent, without empty strings (NULLs instead)
def email=(other)
super(other.blank? ? nil : other)
end
### TODO methods below probably belong somewhere else
def completed_build_bikes

15
db/migrate/20170131164224_user_email_can_be_null.rb

@ -0,0 +1,15 @@
class UserEmailCanBeNull < ActiveRecord::Migration
def up
change_table :users do |t|
t.change :email, :string, default: nil, null: true
end
User.where(email: '').update_all(email: nil)
end
def down
change_table :users do |t|
t.change :email, :string, default: '', null: false
end
end
end

4
db/schema.rb

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20170118112258) do
ActiveRecord::Schema.define(:version => 20170131164224) do
create_table "bike_actions", :force => true do |t|
t.string "action", :limit => 128, :null => false
@ -183,7 +183,7 @@ ActiveRecord::Schema.define(:version => 20170118112258) do
end
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "email"
t.string "encrypted_password", :default => "", :null => false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"

Loading…
Cancel
Save