1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ActionView::Template::Error:PG::AmbiguousColumn: ERROR…でRSpecが失敗して困った。

Posted at

はじめに

RSpecでテストを行っていたところ、下記のエラーが出て困ってしまいました。
ですので、エラーの原因と解決策をここに残したいと思います。

前提条件として、私の環境は次の通りです。

ruby 2.6.3
rails 5.2.3

エラーについて

RSpecのsystem specを実行するとエラーが発生しました。
開発環境では特にエラーは起きておらず、テストのみでしかエラーが発生していなかったので困りました。

ActionView::Template::Error:PG::AmbiguousCoulumn: ERROR: column reference "created_at" is ambiguous ...

原因

上記のエラーに関係しているコントローラーはこちらです。

tasks_controller.rb
@tasks = @tasks.joins(:labels).order("created_at: :desc")

Taskモデルに、TaskモデルとアソシエーションしているLabelモデルをjoinsで結合しています。
それによりorder("created_at desc")が、tasksテーブルにあるcreated_atを指しているのか、labelsテーブルにあるcreated_atを指しているのか、曖昧( = AmbiguousCoulumn )になっていることがエラーの原因でした。

解決策

下記のどちらかの方法で、どのテーブルのcreated_atを使うのか指定してあげます。

@tasks = @tasks.joins(:labels).order(created_at: :DESC)
@tasks = @tasks.joins(:labels).order("tasks.created_at: :desc")

参考

 
以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?