92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/ransack/context.rb', line 92
def association_path(str, base = @base)
base = klassify(base)
str ||= ''.freeze
path = []
segments = str.split(/_/)
association_parts = []
if (segments = str.split(/_/)).size > 0
while segments.size > 0 &&
!base.columns_hash[segments.join(Constants::UNDERSCORE)] &&
association_parts << segments.shift do
assoc, klass = unpolymorphize_association(
association_parts.join(Constants::UNDERSCORE)
)
if found_assoc = get_association(assoc, base)
path += association_parts
association_parts = []
base = klassify(klass || found_assoc)
end
end
end
path.join(Constants::UNDERSCORE)
end
|