У меня есть индексный метод:запрессовки таблица и карта отображает
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
С кодом, как это я могу использовать «filled_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
?
Я получил табличное имя из 'lab_instance.class.table_name' и добавил его к методу' sort_column', который: 'Lab.column_names.include? (Params [: sort])? params [: sort]: "labs.id" 'и я получаю' TypeError (без имплицитного преобразования Fixnum в Hash) ' – Ancinek
Я вижу проблему. После всех соединений и т. Д. Методов при вызове '@ labs.count' он возвращает хэш istead числа – Ancinek