Created
January 27, 2014 18:20
-
-
Save EppO/8654381 to your computer and use it in GitHub Desktop.
rolify callbacks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
irb(main):001:0> f = Folk.first | |
Folk Load (0.2ms) SELECT "folks".* FROM "folks" ORDER BY "folks"."id" ASC LIMIT 1 | |
=> #<Folk id: 1, email: "[email protected]", encrypted_password: "$2a$10$bBJsiFh52QCNi0enN57XeerS2M7Tx8TXWXOgO9xj9pS8...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2014-01-27 16:56:02", updated_at: "2014-01-27 16:56:02"> | |
irb(main):002:0> f.add_role :staff | |
Role Load (0.2ms) SELECT "roles".* FROM "roles" WHERE "roles"."name" = 'staff' AND "roles"."resource_type" IS NULL AND "roles"."resource_id" IS NULL ORDER BY "roles"."id" ASC LIMIT 1 | |
Role Exists (27.6ms) SELECT 1 AS one FROM "roles" INNER JOIN "folks_roles" ON "roles"."id" = "folks_roles"."role_id" WHERE "folks_roles"."folk_id" = ? AND "roles"."id" = 2 LIMIT 1 [["folk_id", 1]] | |
(0.2ms) SELECT "roles".id FROM "roles" INNER JOIN "folks_roles" ON "roles"."id" = "folks_roles"."role_id" WHERE "folks_roles"."folk_id" = ? [["folk_id", 1]] | |
Role Load (0.1ms) SELECT "roles".* FROM "roles" WHERE "roles"."id" IN (1, 2) | |
Role Load (0.1ms) SELECT "roles".* FROM "roles" INNER JOIN "folks_roles" ON "roles"."id" = "folks_roles"."role_id" WHERE "folks_roles"."folk_id" = ? [["folk_id", 1]] | |
(0.1ms) begin transaction | |
before_add: #<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00"> | |
(0.2ms) INSERT INTO "folks_roles" ("folk_id", "role_id") VALUES (1, 2) | |
after_add: #<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00"> | |
(51.2ms) commit transaction | |
=> #<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00"> | |
irb(main):003:0> f.remove_role :staff | |
Role Load (0.4ms) SELECT "roles".* FROM "roles" INNER JOIN "folks_roles" ON "roles"."id" = "folks_roles"."role_id" WHERE "folks_roles"."folk_id" = ? AND "roles"."name" = 'staff' [["folk_id", 1]] | |
(0.1ms) begin transaction | |
before_rm: #<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00"> | |
(0.4ms) DELETE FROM "folks_roles" WHERE "folks_roles"."folk_id" = 1 AND "folks_roles"."role_id" IN (2) | |
before_rm: #<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00"> | |
(57.7ms) commit transaction | |
(0.4ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "folks" INNER JOIN "folks_roles" ON "folks"."id" = "folks_roles"."folk_id" WHERE "folks_roles"."role_id" = ? LIMIT 1) subquery_for_count [["role_id", 2]] | |
(0.1ms) begin transaction | |
(0.1ms) DELETE FROM "folks_roles" WHERE "folks_roles"."role_id" = 2 | |
SQL (0.3ms) DELETE FROM "roles" WHERE "roles"."id" = ? [["id", 2]] | |
(4.4ms) commit transaction | |
=> #<ActiveRecord::AssociationRelation [#<Role id: 2, name: "staff", resource_id: nil, resource_type: nil, created_at: "2014-01-27 18:13:00", updated_at: "2014-01-27 18:13:00">]> | |
irb(main):004:0> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Folk < ActiveRecord::Base | |
rolify before_add: :before_rolify, after_add: :after_rolify, before_remove: :before_rm, after_remove: :after_rm | |
# Include default devise modules. Others available are: | |
# :confirmable, :lockable, :timeoutable and :omniauthable | |
devise :database_authenticatable, :registerable, | |
:recoverable, :rememberable, :trackable, :validatable | |
def before_rolify(model) | |
Rails.logger.debug "before_add: #{model.inspect}" | |
end | |
def after_rolify(model) | |
Rails.logger.debug "after_add: #{model.inspect}" | |
end | |
def before_rm(model) | |
Rails.logger.debug "before_rm: #{model.inspect}" | |
end | |
def after_rm(model) | |
Rails.logger.debug "before_rm: #{model.inspect}" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment