查询has_and_belongs_to_many

时间:2018-01-19 20:09:49

标签: mysql ruby-on-rails postgresql activerecord

我有研讨会表和类别表。

工作坊模型:

  has_many :workshop_categories, dependent: :destroy
  has_many :categories, through: :workshop_categories

类别模型:

  has_many :workshop_categories, dependent: :destroy
  has_many :workshops, through: :workshop_categories

我有一个WorkshopCategory模型:

class WorkshopCategory < ActiveRecord::Base
 belongs_to :workshop
 belongs_to :category
end

我想根据类别查询活动(活动是范围)研讨会。在车间模型中尝试了这个:

  def self.browse(params)  
   workshops = Workshop.active.order( "created_at DESC" )
   workshops = workshops.joins(:categories).where(:categories => { :id => params[:category]}) if params[:category].present?
   workshops
  end

但是我收到了这个错误:

ActiveRecord::StatementInvalid (PG::AmbiguousColumn: ERROR:  column reference "id" is ambiguous

此查询的正确方法是什么?我在互联网上找到的一切都已经过时了。

1 个答案:

答案 0 :(得分:0)

此问题是因为类别和研讨会都有一列workshops.joins(:categories).where('category.id = ?', ...)

您需要执行以下操作:

id

请注意它现在如何指定您引用的{{1}}。