Consistent interface for Principal.member_of and not_member_of
Principal model has the following two scopes: member_of and not_member_of, both of them expect project or collection of projects as an argument. The problem is that given
projects = Project.where(:name => 'My Project')you'll get correct results from
Principal.member_of(projects), but an exception will be thrown if you'll try to run
Principal.not_member_of(projects). That's because not_member_of puts its argument into an array if it's not a subclass of Array (which Project::ActiveRecord_Relation is not, though it knows how to #map).
I think one should be able to call both member_of and not_member_of with any kind of project collection, not just Array, and both of them should process arguments in the same way. So I provide a patch for that.