Feature #37674 » 0001-adds-missing-join-when-ordering-by-authsource-37674.patch
| app/models/user_query.rb | ||
|---|---|---|
| 153 | 153 |
#{sql_for_field(:mail, operator, value, emails, 'address')})
|
| 154 | 154 |
SQL |
| 155 | 155 |
end |
| 156 | ||
| 157 |
def joins_for_order_statement(order_options) |
|
| 158 |
joins = [super] |
|
| 159 | ||
| 160 |
if order_options |
|
| 161 |
if order_options.include?('auth_source')
|
|
| 162 |
joins << "LEFT OUTER JOIN #{AuthSource.table_name} auth_sources ON auth_sources.id = #{queried_table_name}.auth_source_id"
|
|
| 163 |
end |
|
| 164 |
end |
|
| 165 | ||
| 166 |
joins.any? ? joins.join(' ') : nil
|
|
| 167 |
end |
|
| 156 | 168 |
end |
| test/unit/user_query_test.rb | ||
|---|---|---|
| 169 | 169 |
assert_not users.map(&:id).include? 1 |
| 170 | 170 |
end |
| 171 | 171 | |
| 172 |
def test_auth_source_ordering |
|
| 173 |
user = User.find(1) |
|
| 174 |
user.update_column :auth_source_id, 1 |
|
| 175 | ||
| 176 |
q = UserQuery.new name: '_' |
|
| 177 |
q.column_names = ['id', 'auth_source.name'] |
|
| 178 |
q.sort_criteria = 'auth_source.name' |
|
| 179 | ||
| 180 |
users = q.results_scope |
|
| 181 |
assert users.many? |
|
| 182 |
assert_equal user, users.last |
|
| 183 |
end |
|
| 184 | ||
| 172 | 185 |
def find_users_with_query(query) |
| 173 | 186 |
User.where(query.statement).to_a |
| 174 | 187 |
end |
- « Previous
- 1
- …
- 9
- 10
- 11
- Next »