【发布时间】:2016-10-19 19:01:25
【问题描述】:
我有一个索引方法:
def index
if params[:city] || params[:lab_type]
@labs = Lab.in_city(params[:city]).with_type(params[:lab_type]).advanced_search(params[:search]).order(sort_column + " " + sort_direction)
else
@labs = Lab.advanced_search(params[:search]).order(sort_column + " " + sort_direction)
end
# Marker setup:
if @places.count > 1
@hash = Gmaps4rails.build_markers(@labs.select(:name, :latitude, :longitude)) do |lab, marker|
marker.lat lab.latitude
marker.lng lab.longitude
end
end
# Only labs with offer_items.count > 1 if filled_params
@labs = @labs.joins( :offer_items ).group( 'labs.id' ).having( 'count( lab_id ) > 1' ) if params[:filled_only]
end
使用这样的代码,我可以使用“fill_only”,它会产生预期的结果 - 只给我提供任何报价计数超过 0 的实验室;
但是,如果我将带有joins, group, having 的代码放在Marker setup 之前并将filled_only 设置为true,我会从我的数据库中收到一条错误消息:
ActiveRecord::StatementInvalid (PG::AmbiguousColumn: ERROR: column reference "id" is ambiguous
LINE 1: ... BY labs.id HAVING (count( lab_id ) > 1) ORDER BY id asc
这可能是什么原因造成的? Marker setup 中的代码是否会更改我的 @places 变量中的任何内容?
【问题讨论】:
标签: mysql ruby-on-rails gmaps4rails