Giter VIP home page Giter VIP logo

aoz-003's People

Contributors

casaper avatar kitsane avatar lagodimou avatar nuritnt avatar panterch avatar toupeira avatar zsbenke avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aoz-003's Issues

User.email has uniqueness incompatible with soft_deletion

Soft deleting a user and then trying to create a new user with the same email address, will raise a ActiveRecord::RecordNotUnique exeption.

ActiveRecord::RecordNotUnique at /users
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_email"
DETAIL:  Key (email)=([email protected]) already exists.
: INSERT INTO "users" ("email", "encrypted_password", "role", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"

Solution:

Create a partial index on the email field in the users table like this:

add_column :users, :active, :boolean
add_index :users, :email, unique: true, where: 'active'

Missing Country field for contact

At least the imported volunteers have addresses in Germany in them. So a optional country field for Contact would be something one should likeley implement.

Authorization issues

Noticed a few issues while reviewing #126:

  • Devise controller actions don't seem to be authorized at all, are we using them? (see varvet/pundit#113)
  • Calling authorize at the end of actions like create and update doesn't seem right, as the DB change has already been performed at this point. I guess the exception raised by Pundit will trigger a rollback, but we still have to think about other side-effects like mail notifications
  • There are a lot of actions without an authorize call, we should probably add after_action :verify_authorized to more/all controllers (or ApplicationController)
  • We're duplicating the policy logic for new?/create? and edit?/update?

I haven't worked with Pundit before so maybe I'm misunderstanding something :)

/cc @panterch @kitsane

Client record with history from soft deleted user crashes on show action

irb(main):008:0> User.find(31)
  User Load (0.6ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 LIMIT $2  [["id", 31], ["LIMIT", 1]]
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=31 [WHERE "users"."deleted_at" IS NULL]
irb(main):007:0> User.with_deleted.find(31)
  User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 31], ["LIMIT", 1]]
=> #<User id: 31, email: "[email protected]", role: "superadmin", created_at: "2017-07-20 10:27:29", updated_at: "2017-07-20 10:28:54", invitation_token: nil, invitation_created_at: "2017-07-20 10:27:29", invitation_sent_at: "2017-07-20 10:27:29", invitation_accepted_at: "2017-07-20 10:27:57", invitation_limit: nil, invited_by_id: nil, deleted_at: "2017-07-20 10:28:54">
I, [2017-07-20T09:36:02.785988 #14536]  INFO -- : [f451c761-fa9f-4c7d-a118-6eeddd2aa462]   Rendered application/_navigation.html.slim (11.4ms)
I, [2017-07-20T09:36:02.794509 #14536]  INFO -- : [f451c761-fa9f-4c7d-a118-6eeddd2aa462]   Rendered application/_notification.html.slim (4.6ms)
I, [2017-07-20T09:36:02.802179 #14536]  INFO -- : [f451c761-fa9f-4c7d-a118-6eeddd2aa462]   Rendered application/_footer.html.slim (3.7ms)
I, [2017-07-20T09:36:02.802616 #14536]  INFO -- : [f451c761-fa9f-4c7d-a118-6eeddd2aa462] Completed 200 OK in 126ms (Views: 69.5ms | ActiveRecord: 14.8ms)
I, [2017-07-20T09:36:03.367823 #14536]  INFO -- : [b446a52f-f85a-4ed8-8614-530f99c39550] Started GET "/" for 185.14.158.60 at 2017-07-20 09:36:03 +0200
I, [2017-07-20T09:36:03.368819 #14536]  INFO -- : [b446a52f-f85a-4ed8-8614-530f99c39550] Processing by ApplicationController#home as HTML
I, [2017-07-20T09:36:03.369532 #14536]  INFO -- : [b446a52f-f85a-4ed8-8614-530f99c39550] Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
I, [2017-07-20T09:36:03.393776 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585] Started GET "/users/sign_in" for 185.14.158.60 at 2017-07-20 09:36:03 +0200
I, [2017-07-20T09:36:03.394742 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585] Processing by Devise::SessionsController#new as HTML
I, [2017-07-20T09:36:03.397092 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585]   Rendering devise/sessions/new.html.slim within layouts/application
I, [2017-07-20T09:36:03.401871 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585]   Rendered devise/sessions/new.html.slim within layouts/application (4.6ms)
I, [2017-07-20T09:36:03.403013 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585]   Rendered application/_navigation.html.slim (0.1ms)
I, [2017-07-20T09:36:03.403321 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585]   Rendered application/_notification.html.slim (0.1ms)
I, [2017-07-20T09:36:03.403600 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585]   Rendered application/_footer.html.slim (0.1ms)
I, [2017-07-20T09:36:03.403876 #14536]  INFO -- : [8843e2d8-087c-409a-9fd8-9aaa8c6f7585] Completed 200 OK in 9ms (Views: 7.1ms | ActiveRecord: 0.0ms)
I, [2017-07-20T09:38:53.996015 #14536]  INFO -- : [e9deae8a-dfe7-459d-b6d2-3bb9b6b8662f] Started GET "/" for 185.14.158.60 at 2017-07-20 09:38:53 +0200
I, [2017-07-20T09:38:53.996982 #14536]  INFO -- : [e9deae8a-dfe7-459d-b6d2-3bb9b6b8662f] Processing by ApplicationController#home as HTML
I, [2017-07-20T09:38:53.997749 #14536]  INFO -- : [e9deae8a-dfe7-459d-b6d2-3bb9b6b8662f] Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
I, [2017-07-20T09:38:54.025264 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44] Started GET "/users/sign_in" for 185.14.158.60 at 2017-07-20 09:38:54 +0200
I, [2017-07-20T09:38:54.026357 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44] Processing by Devise::SessionsController#new as HTML
I, [2017-07-20T09:38:54.028742 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44]   Rendering devise/sessions/new.html.slim within layouts/application
I, [2017-07-20T09:38:54.038720 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44]   Rendered devise/sessions/new.html.slim within layouts/application (9.9ms)
I, [2017-07-20T09:38:54.039823 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44]   Rendered application/_navigation.html.slim (0.1ms)
I, [2017-07-20T09:38:54.040108 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44]   Rendered application/_notification.html.slim (0.1ms)
I, [2017-07-20T09:38:54.040428 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44]   Rendered application/_footer.html.slim (0.1ms)
I, [2017-07-20T09:38:54.040779 #14536]  INFO -- : [36c57b23-d875-42d4-a3f5-26374f59fc44] Completed 200 OK in 14ms (Views: 12.3ms | ActiveRecord: 0.0ms)
I, [2017-07-20T09:38:56.094400 #14533]  INFO -- : [c9e08fc9-d471-4197-bab8-c38470c81914] Started GET "/" for 185.14.158.60 at 2017-07-20 09:38:56 +0200
I, [2017-07-20T09:38:56.096246 #14533]  INFO -- : [c9e08fc9-d471-4197-bab8-c38470c81914] Processing by ApplicationController#home as HTML
I, [2017-07-20T09:38:56.097138 #14533]  INFO -- : [c9e08fc9-d471-4197-bab8-c38470c81914] Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
I, [2017-07-20T09:38:56.121528 #14539]  INFO -- : [7fb8739a-de55-4bb5-94b8-fa933a313eff] Started GET "/users/sign_in" for 185.14.158.60 at 2017-07-20 09:38:56 +...skipping...
D, [2017-07-20T12:29:04.236596 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   ContactPhone Load (0.4ms)  SELECT "contact_points".* FROM "contact_points" WHERE "contact_points"."deleted_at" IS NULL AND "contact_points"."type" IN ('ContactPhone') AND "contact_points"."contact_id" = $1  [["contact_id", 11]]
I, [2017-07-20T12:29:04.236995 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered contacts/_show.html.slim (8.2ms)
D, [2017-07-20T12:29:04.240871 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   LanguageSkill Exists (0.4ms)  SELECT  1 AS one FROM "language_skills" WHERE "language_skills"."deleted_at" IS NULL AND "language_skills"."languageable_id" = $1 AND "language_skills"."languageable_type" = $2 LIMIT $3  [["languageable_id", 8], ["languageable_type", "Client"], ["LIMIT", 1]]
D, [2017-07-20T12:29:04.242760 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   LanguageSkill Load (0.4ms)  SELECT "language_skills".* FROM "language_skills" WHERE "language_skills"."deleted_at" IS NULL AND "language_skills"."languageable_id" = $1 AND "language_skills"."languageable_type" = $2  [["languageable_id", 8], ["languageable_type", "Client"]]
I, [2017-07-20T12:29:04.243481 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered language_skills/_show.html.slim (5.1ms)
D, [2017-07-20T12:29:04.246007 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Relative Exists (0.3ms)  SELECT  1 AS one FROM "relatives" WHERE "relatives"."deleted_at" IS NULL AND "relatives"."relativeable_id" = $1 AND "relatives"."relativeable_type" = $2 LIMIT $3  [["relativeable_id", 8], ["relativeable_type", "Client"], ["LIMIT", 1]]
D, [2017-07-20T12:29:04.247956 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Relative Load (0.4ms)  SELECT "relatives".* FROM "relatives" WHERE "relatives"."deleted_at" IS NULL AND "relatives"."relativeable_id" = $1 AND "relatives"."relativeable_type" = $2  [["relativeable_id", 8], ["relativeable_type", "Client"]]
I, [2017-07-20T12:29:04.248404 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered relatives/_show.html.slim (4.7ms)
I, [2017-07-20T12:29:04.249400 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered clients/_request.html.slim (0.6ms)
D, [2017-07-20T12:29:04.253119 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 LIMIT $2  [["id", 6], ["LIMIT", 1]]
D, [2017-07-20T12:29:04.256613 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Schedule Load (0.6ms)  SELECT "schedules".* FROM "schedules" WHERE "schedules"."deleted_at" IS NULL AND "schedules"."scheduleable_id" = $1 AND "schedules"."scheduleable_type" = $2  [["scheduleable_id", 8], ["scheduleable_type", "Client"]]
I, [2017-07-20T12:29:04.258247 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered schedules/_show.html.slim (4.2ms)
D, [2017-07-20T12:29:04.260828 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   PaperTrail::Version Load (0.5ms)  SELECT "versions".* FROM "versions" WHERE "versions"."item_id" = $1 AND "versions"."item_type" = $2 ORDER BY "versions"."created_at" ASC, "versions"."id" ASC  [["item_id", 8], ["item_type", "Client"]]
D, [2017-07-20T12:29:04.262851 #30471] DEBUG -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 LIMIT $2  [["id", 31], ["LIMIT", 1]]
I, [2017-07-20T12:29:04.264288 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered clients/_versions_index.html.slim (5.8ms)
I, [2017-07-20T12:29:04.264412 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]   Rendered clients/show.html.slim within layouts/application (62.4ms)
I, [2017-07-20T12:29:04.264697 #30471]  INFO -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02] Completed 500 Internal Server Error in 77ms (ActiveRecord: 8.1ms)
F, [2017-07-20T12:29:04.266017 #30471] FATAL -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]
F, [2017-07-20T12:29:04.266079 #30471] FATAL -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02] ActiveRecord::RecordNotFound (Couldn't find User with 'id'=31 [WHERE "users"."deleted_at" IS NULL]):
F, [2017-07-20T12:29:04.266122 #30471] FATAL -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02]
F, [2017-07-20T12:29:04.266169 #30471] FATAL -- : [c3c7e02a-2412-45f2-8947-6d48aa907c02] app/helpers/application_helper.rb:90:in `find_version_author_email'
[c3c7e02a-2412-45f2-8947-6d48aa907c02] app/views/clients/_versions_index.html.slim:17:in `block in _app_views_clients__versions_index_html_slim__4251881461739633019_70188887185220'
[c3c7e02a-2412-45f2-8947-6d48aa907c02] app/views/clients/_versions_index.html.slim:14:in `each'
[c3c7e02a-2412-45f2-8947-6d48aa907c02] app/views/clients/_versions_index.html.slim:14:in `_app_views_clients__versions_index_html_slim__4251881461739633019_70188887185220'
[c3c7e02a-2412-45f2-8947-6d48aa907c02] app/views/clients/show.html.slim:75:in `_app_views_clients_show_html_slim__2092672312431309620_70188912841660'
I, [2017-07-20T12:29:06.684337 #30471]  INFO -- : [73027cdc-4efe-4f4f-8799-9172d403e233] Started GET "/" for 185.14.158.60 at 2017-07-20 12:29:06 +0200
I, [2017-07-20T12:29:06.685298 #30471]  INFO -- : [73027cdc-4efe-4f4f-8799-9172d403e233] Processing by ApplicationController#home as HTML
I, [2017-07-20T12:29:06.686325 #30471]  INFO -- : [73027cdc-4efe-4f4f-8799-9172d403e233] Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
I, [2017-07-20T12:29:06.710151 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03] Started GET "/users/sign_in" for 185.14.158.60 at 2017-07-20 12:29:06 +0200
I, [2017-07-20T12:29:06.711158 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03] Processing by Devise::SessionsController#new as HTML
I, [2017-07-20T12:29:06.713691 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03]   Rendering devise/sessions/new.html.slim within layouts/application
I, [2017-07-20T12:29:06.718417 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03]   Rendered devise/sessions/new.html.slim within layouts/application (4.6ms)
I, [2017-07-20T12:29:06.719444 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03]   Rendered application/_navigation.html.slim (0.1ms)
I, [2017-07-20T12:29:06.719761 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03]   Rendered application/_notification.html.slim (0.1ms)
I, [2017-07-20T12:29:06.720057 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03]   Rendered application/_footer.html.slim (0.1ms)
I, [2017-07-20T12:29:06.720317 #30471]  INFO -- : [faea576c-5ebe-4a49-83e8-238e0c484d03] Completed 200 OK in 9ms (Views: 7.0ms | ActiveRecord: 0.0ms)

Crash after trying to create a user with email still present in soft deleted scope

I, [2017-07-20T12:10:02.779412 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1] Started GET "/users/new" for 212.51.155.234 at 2017-07-20 12:10:02 +0200
I, [2017-07-20T12:10:02.785684 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1] Processing by UsersController#new as HTML
D, [2017-07-20T12:10:02.832463 #30468] DEBUG -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   User Load (1.1ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
I, [2017-07-20T12:10:02.877400 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendering users/new.html.slim within layouts/application
I, [2017-07-20T12:10:02.913437 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendered users/_form.html.slim (19.9ms)
I, [2017-07-20T12:10:02.913597 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendered users/new.html.slim within layouts/application (36.0ms)
D, [2017-07-20T12:10:02.941449 #30468] DEBUG -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Profile Load (0.6ms)  SELECT  "profiles".* FROM "profiles" WHERE "profiles"."deleted_at" IS NULL AND "profiles"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
D, [2017-07-20T12:10:02.970016 #30468] DEBUG -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Contact Load (0.9ms)  SELECT  "contacts".* FROM "contacts" WHERE "contacts"."deleted_at" IS NULL AND "contacts"."contactable_id" = $1 AND "contacts"."contactable_type" = $2 LIMIT $3  [["contactable_id", 1], ["contactable_type", "Profile"], ["LIMIT", 1]]
I, [2017-07-20T12:10:02.992138 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendered application/_navigation.html.slim (69.2ms)
I, [2017-07-20T12:10:02.998588 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendered application/_notification.html.slim (4.0ms)
I, [2017-07-20T12:10:03.004099 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1]   Rendered application/_footer.html.slim (3.4ms)
I, [2017-07-20T12:10:03.004604 #30468]  INFO -- : [83e9f9ad-240d-4f03-a939-95405ab4f0e1] Completed 200 OK in 219ms (Views: 121.6ms | ActiveRecord: 24.5ms)
I, [2017-07-20T12:10:14.441777 #30473]  INFO -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b] Started POST "/users" for 212.51.155.234 at 2017-07-20 12:10:14 +0200
I, [2017-07-20T12:10:14.443861 #30473]  INFO -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b] Processing by UsersController#create as HTML
I, [2017-07-20T12:10:14.443946 #30473]  INFO -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]   Parameters: {"utf8"=>"โœ“", "authenticity_token"=>"YzjjiXqC+ZnkRQr8Q2CInZ863bAqxXSPt/9seA/YikIsYXhf5Z89HRTQEax/OkzNVkYe2vPeibxv9B1UsVTYAw==", "user"=>{"email"=>"[email protected]", "role"=>"superadmin"}, "commit"=>"Benutzer/in erstellen"}
D, [2017-07-20T12:10:14.447265 #30473] DEBUG -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]   User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
D, [2017-07-20T12:10:14.653239 #30473] DEBUG -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]    (0.2ms)  BEGIN
D, [2017-07-20T12:10:14.655953 #30473] DEBUG -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]   User Exists (0.4ms)  SELECT  1 AS one FROM "users" WHERE "users"."email" = $1 AND "users"."deleted_at" IS NULL LIMIT $2  [["email", "[email protected]"], ["LIMIT", 1]]
D, [2017-07-20T12:10:14.659131 #30473] DEBUG -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]   SQL (1.1ms)  INSERT INTO "users" ("email", "encrypted_password", "role", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["email", "[email protected]"], ["encrypted_password", "$2a$11$Pd1ofy9WgLdWDotPnMFQ6uMFecqrF9fr.4anXu9Wmj2q42ncFdb2W"], ["role", "superadmin"], ["created_at", "2017-07-20 10:10:14.656581"], ["updated_at", "2017-07-20 10:10:14.656581"]]
D, [2017-07-20T12:10:14.659612 #30473] DEBUG -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]    (0.1ms)  ROLLBACK
I, [2017-07-20T12:10:14.666416 #30473]  INFO -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b] Completed 500 Internal Server Error in 222ms (ActiveRecord: 6.5ms)
F, [2017-07-20T12:10:14.667671 #30473] FATAL -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]
F, [2017-07-20T12:10:14.667731 #30473] FATAL -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b] ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_email"
DETAIL:  Key (email)=([email protected]) already exists.
: INSERT INTO "users" ("email", "encrypted_password", "role", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"):
F, [2017-07-20T12:10:14.667775 #30473] FATAL -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b]
F, [2017-07-20T12:10:14.667818 #30473] FATAL -- : [9c00d704-2dc4-43bf-8f17-c92259ab755b] app/controllers/users_controller.rb:22:in `create'
irb(main):002:0> User.where(email: '[email protected]').count
   (0.9ms)  SELECT COUNT(*) FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."email" = $1  [["email", "[email protected]"]]
=> 0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.