Change with_any_role and with_all_roles to return an AR relation instead of an Array#441
Change with_any_role and with_all_roles to return an AR relation instead of an Array#441dkniffin wants to merge 9 commits intoRolifyCommunity:masterfrom
Conversation
|
Rerunning travis to see what our results are. |
|
Ok. I might have to merge master in first. |
|
@dkniffin I looked over the test failures and they appear to be legit. We're getting things like So it looks like we're adding to the list twice. |
|
Yea. I'll look into it 👍 |
|
@wldcordeiro Do you know why this might be happening when I try and run the tests locally?: |
|
Hmm. I'm not sure I understand why this expectation exists. Here, we set up the subject to have the roles "admin" everywhere, and "moderator" on Hopefully that makes sense. |
|
@dkniffin it looks to me that we're testing in the general unscoped sense so we're saying "who has both admin and moderator" roles and the user has only moderator over the https://github.com/RolifyCommunity/rolify/wiki/Usage#finders-methods |
|
Ok, makes sense. I'll update the code to accomodate that. I'm very glad there's good test cases around all this :) |
7 similar comments
|
Hmm. So it's failing now with two errors. The first is a For the other, I'm not familiar with mongoid at all, so if you could provide some guidance, I'd appreciate it. |
|
Somehow it does work on Rails 4.2 but still return an Array using Rails 5. Loading development environment (Rails 4.2.11)
irb(main):006:0> User.with_all_roles :toto
User Load (0.8ms) SELECT DISTINCT "users".* FROM (SELECT "users".* FROM "users" INNER JOIN "users_roles" ON "users_roles"."user_id" = "users"."id" INNER JOIN "roles" ON "roles"."id" = "users_roles"."role_id" WHERE (((roles.name IN ('toto')) AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))) AS users
=> #<ActiveRecord::Relation [#<User id: 1, email: "toto@example.com", created_at: "2019-02-27 18:16:18", updated_at: "2019-02-27 18:16:18">]>Loading development environment (Rails 5.2.2)
irb(main):001:0> User.with_all_roles :toto
User Load (0.2ms) SELECT "users".* FROM (SELECT "users".* FROM "users" INNER JOIN "users_roles" ON "users_roles"."user_id" = "users"."id" INNER JOIN "roles" ON "roles"."id" = "users_roles"."role_id" WHERE (((roles.name IN ('toto')) AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))) AS users
=> [#<User id: 1, email: "toto@example.com", created_at: "2019-02-27 15:52:58", updated_at: "2019-02-27 15:52:58">, #<User id: 2, email: "tata@example.com", created_at: "2019-02-27 15:54:14", updated_at: "2019-02-27 15:54:14">] |
Fixes #292
I couldn't run the tests locally, unfortunately, so I'm hoping they run on travis.