panter / aoz-003 Goto Github PK
View Code? Open in Web Editor NEWAOZ Voluntary platform (MOVED TO https://git.panter.ch/open-source/aoz-003)
License: GNU Affero General Public License v3.0
AOZ Voluntary platform (MOVED TO https://git.panter.ch/open-source/aoz-003)
License: GNU Affero General Public License v3.0
aoz-003/app/models/volunteer.rb
Line 274 in 8da5700
aoz-003/app/models/volunteer.rb
Line 284 in 8da5700
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)
@chrysalag What does or should this do?
aoz-003/app/models/group_offer.rb
Line 58 in 03c3f20
test_assign_unassigned_client_(volunteer_side)
passes locally
sometimes fails on Travis
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.
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"
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'
Is:
Request path -> not logged in -> login form -> home
Should:
Request path -> not logged in -> login form -> request path
Noticed a few issues while reviewing #126:
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 notificationsauthorize
call, we should probably add after_action :verify_authorized
to more/all controllers (or ApplicationController
)new?
/create?
and edit?
/update?
I haven't worked with Pundit before so maybe I'm misunderstanding something :)
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.