diff --git a/app/models/user.rb b/app/models/user.rb index 5c62268..cf605ca 100644 --- a/app/models/user.rb +++ b/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 diff --git a/db/migrate/20170131164224_user_email_can_be_null.rb b/db/migrate/20170131164224_user_email_can_be_null.rb new file mode 100644 index 0000000..19625be --- /dev/null +++ b/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 diff --git a/db/schema.rb b/db/schema.rb index c001ecc..b405966 100644 --- a/db/schema.rb +++ b/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"