Rails 3 - включить значение в запрос - PullRequest
0 голосов
/ 08 августа 2011

Я немного запутался, как работает включает .

У меня есть этот запрос к базе данных: @ car = Car.includes (: colors) .paginate (: per_page=> 10,: page => params [: page]) В таблице Автомобиль У меня есть столбцы: имя, цена, цвет, ... В таблице Цвета столбцы:car_id, name, color_name, ...

На мой взгляд, я могу использовать для печати цену автомобиля @car.price, но я не могу использовать @ car.color_name , почему?

И еще одна проблема - у меня в обеих таблицах столбец с именем имеет , как мне узнать, с каким из них я сейчас работаю?Если я сделаю @car.name, то это значение будет взято из таблицы Cars или Colors ?

Извините за возможноглупый вопрос, но я не знаю, как работать с данными из 2 таблиц.

1 Ответ

1 голос
/ 08 августа 2011

Если предположить, что это ассоциация Car has_many Colors, это будет выглядеть примерно так:

# This loads 10 cars with offset X
@cars = Car.includes(:colors).paginate(:per_page => 10, :page => params[:page])
# the first car found
@car = @cars.first
# Name of the Car
@car.name
# All colors of the car
@car.colors
# The name of the first color
@car.colors.first.name

Когда вы используете оператор includes, это не означает, что обе модели смешаны друг с другом. Ассоциации только предварительно загружены, но общая структура ассоциаций рельсов остается прежней ... Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...