Post.pluck(:author_id)class Post < ActiveRecord::Base enum status: { a: "a", b: "b", c: "c" } has_many :commentsend
class Comment < ActiveRecord::Base enum status: { red: "red", green: "green", blue: "blue" } belongs_to :postend
class BugTest < Minitest::Test def test_association_stuff post = Post.create!(status: "a") post.comments << Comment.create!(status: "blue", not_enum: "blue")
expected = [["a", "blue", "blue"]] actual = Post.includes(:comments).pluck(:status, "comments.status", "comments.not_enum") assert_equal expected, actual endend def pluck(*column_names) if loaded? && (column_names.map(&:to_s) - @klass.attribute_names - @klass.attribute_aliases.keys).empty? return records.pluck(*column_names) end
if has_include?(column_names.first) relation = apply_join_dependency relation.pluck(*column_names) else klass.disallow_raw_sql!(column_names) relation = spawn relation.select_values = column_names result = skip_query_cache_if_necessary { klass.connection.select_all(relation.arel, nil) } result.cast_values(klass.attribute_types) end endresult.cast_values(klass.attribute_types)