Rails: 保存されていない親のrelationでのpluckとmapの挙動の違い

環境

  • Ruby 2.5.1
  • Rails 5.2.1

現象

DBにまだ保存されていないActiveRecordインスタンスのリレーションに対して pluck を使っても期待した値が取れない

comment = Comment.new
comment.tags.build
comment.tags.pluck(:id) # => [] NG!
comment.tags.map(&:id) # => [nil] OK!

Pocket