2015-05-15 2 views
0

Вот мой код. Он работает нормально, если у меня есть что-то в поле поиска: или если у меня есть что-то в поле поставщика, но если у меня есть что-то в обоих, я получаю «Неоднозначное имя столбца« NUMBER ». Есть ли способ выбрать AS или что-то еще?Rails Activerecord Неоднозначное название столбца на .joins

@date_from = params[:date_from] ||  Date.today.beginning_of_month.strftime('%m/%d/%Y') 
@date_to = params[:date_to] || Date.today.strftime('%m/%d/%Y') 
q = "%#{params[:search]}%" 

@products = Product.where("DISCONT = ? AND NONPRODUCT = ?" ,0,0) 
@products = @products.where('NUMBER like ?' ,q) if params[:search].present? 
@products = @products.joins(:supplier_items).where('SUPPLIER = ?' ,params[:supplier]) if params[:supplier].present? 
@products = @products.paginate(page: params[:page], per_page: 25) 

ответ

3

Просто префикс номер с именем таблицы

Например:

@products = Product.where(:discount => 0, :nonproduct => 0) 
@products = @products.where('products.number like ?', query) 
+0

То, что я думал, но когда я добавить продукты. Я получаю следующую ошибку: «TinyTds :: Ошибка: идентификатор многочастности« products.NUMBER »не может быть связан: EXEC sp_executesql N'SELECT TOP (25) [__rnt]. * FROM (SELECT ROW_NUMBER() OVER (ORDER BY [STOCK]. [STOCK_ID] ASC) AS [__rn], [STOCK]. * FROM [STOCK] WHERE (DISCONT = 0 AND NONPRODUCT = 0) AND (products.NUMBER как N ''% ipob% '')) AS [__rnt] WHERE [__rnt]. [__ rn]> (0) ORDER BY [__rnt]. [__ rn] ASC '" – DRD

+0

Является ли ваш запас таблиц или товар? Этот SQL выглядит как запас. –

+0

Таблица в БД является STOCK, но в модели продукта у меня есть self.table_name = 'STOCK' – DRD

0

Я предполагаю, что ваш suppliers стол и products таблицу оба имеют столбец с именем «номер». Честно говоря, вам лучше всего начать миграцию, чтобы изменить имена столбцов сейчас (может быть, supplier_num/product_num), потому что сохранить его как нечто общее как «число», скорее всего, приведет к головным болям.

Смежные вопросы