Do not use Arel.star
when ignored_columns
If there are any ignored columns, we will now list out all columns we want to be returned from the database. Includes a regression test.
This commit is contained in:
parent
5cd6f1792e
commit
6acde9578f
@ -1035,6 +1035,8 @@ def convert_join_strings_to_ast(table, joins)
|
||||
def build_select(arel)
|
||||
if select_values.any?
|
||||
arel.project(*arel_columns(select_values.uniq))
|
||||
elsif @klass.ignored_columns.any?
|
||||
arel.project(*arel_columns(@klass.column_names))
|
||||
else
|
||||
arel.project(table[Arel.star])
|
||||
end
|
||||
|
@ -1476,4 +1476,25 @@ def test_default_values_are_deeply_dupped
|
||||
assert_equal(%w(first_name last_name), Developer.ignored_columns)
|
||||
assert_equal(%w(first_name last_name), SymbolIgnoredDeveloper.ignored_columns)
|
||||
end
|
||||
|
||||
test "when #reload called, ignored columns' attribute methods are not defined" do
|
||||
developer = Developer.create!(name: "Developer")
|
||||
refute developer.respond_to?(:first_name)
|
||||
refute developer.respond_to?(:first_name=)
|
||||
|
||||
developer.reload
|
||||
|
||||
refute developer.respond_to?(:first_name)
|
||||
refute developer.respond_to?(:first_name=)
|
||||
end
|
||||
|
||||
test "ignored columns not included in SELECT" do
|
||||
query = Developer.all.to_sql
|
||||
|
||||
# ignored column
|
||||
refute query.include?("first_name")
|
||||
|
||||
# regular column
|
||||
assert query.include?("name")
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user