2016-01-07 3 views
0

У меня есть таблица, которая имеет много данных внутриRails спичечные контроллер один вар на другой вар

Я хотел сделать что-то вроде этого. Чтобы захватить все внутри столбца, которое сопоставляет что-то еще внутри другого столбца в другой таблице.

Так @car = Cardata.find_by(@carmake)

Так, @carmake будет Volvo, Введенные в отдельной форме и хранится в таблице.

В таблице Cardata имеется массивный список (около 40 тыс. Записей) с различными автомобилями от брод до renault to volvo.

Вопрос есть. Будет ли @car отображать все записи, содержащие слово volvo внутри? Или это неправильный способ сделать это? или мне нужно обозначить его по столбцу?

Сэм

+0

'find_by' находит первую запись, соответствующую указанным условиям. –

+0

Если вы хотите искать в mutliple fields с помощью carmake, вы можете создать что-то вроде этого. 'Cardata.where ('description ilike? Или title ilike?',"% # {Query}% ","% # {query}% ")' –

+0

Сухой способ поиска в нескольких полях 'Cardata.where ('description LIKE : search ИЛИ title LIKE: search ', search: "% # {search}%") ' –

ответ

0

Чтобы получить все из них:

@cars = Cardata.where(carmake: @carmake).all 

Чтобы получить только первое:

@car = Cardata.where(carmake: @carmake).first  
+0

Я думаю' where' по умолчанию return 'all' нам не нужно добавлять' .all' –

0

Если у вас есть столбец в данном автомобиле для make, я думаю, что вы» d хотел бы сделать что-то вроде:

@cars = Cardata.where(make: @carmake).all 
0

вы должны делать:

@car = Cardata.find_by_attribute_name(@carmake) # This will return the first car that matches @carmake. 

Предполагая имя_атрибута модель.

Вы бы:

Cardata.find_by_model(@carmake) 

Если вы хотите, чтобы все автомобили, которые соответствуют @carmake.

Вам нужно сделать:

Cardata.where(model: @carmake) # this will return an array of all cars with model @carmake. 
Смежные вопросы