Fix to handle MetaWhere and non-MetaWhere conditions correctly.
This commit is contained in:
@@ -89,7 +89,12 @@ module CanCan
|
||||
if override_scope
|
||||
@model_class.scoped.merge(override_scope)
|
||||
elsif @model_class.respond_to?(:where) && @model_class.respond_to?(:joins)
|
||||
@model_class.where(conditions).joins(joins)
|
||||
mergeable_conditions = @rules.select {|rule| rule.unmergeable? }.blank?
|
||||
if mergeable_conditions
|
||||
@model_class.where(conditions).joins(joins)
|
||||
else
|
||||
@model_class.where(*(@rules.map(&:conditions))).joins(joins)
|
||||
end
|
||||
else
|
||||
@model_class.scoped(:conditions => conditions, :joins => joins)
|
||||
end
|
||||
|
||||
@@ -54,6 +54,10 @@ module CanCan
|
||||
@conditions == {} || @conditions.nil?
|
||||
end
|
||||
|
||||
def unmergeable?
|
||||
@conditions.respond_to?(:keys) && (! @conditions.keys.first.kind_of? Symbol)
|
||||
end
|
||||
|
||||
def associations_hash(conditions = @conditions)
|
||||
hash = {}
|
||||
conditions.map do |name, value|
|
||||
|
||||
Reference in New Issue
Block a user