Rails 3 - множественные ассоциации - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть первая таблица с именем Автомобили , которая содержит информацию о цвете автомобиля, весе, цене и т. Д.

Затем у меня есть вторая таблица, например Other_informations .Эта таблица содержит другую информацию об этой машине из первой таблицы.

В первой таблице ( Cars ) указано название автомобиля.Если мне нужно создать ассоциации между этими двумя таблицами, я могу использовать:

car.rb

имеет много: other_informations

otherinformation.rb

own_to: car

В этом случае мне нужно установить имя одного столбца в таблице Other_informations на car_id , и ассоциации будут созданы.К этому моменту все в порядке.

Но теперь - мне нужно добавить только одну ассоциацию (из таблицы Другие_информации в таблицу Автомобили - ассоциации того же типакак первый).

Я пытался сделать что-то вроде этого: car.rb

has many :other_informations

otherinformation.rb

belongs_to :car
belongs_to :car2

И затем в представлении используется:

data.car2.name_of_the_car_from_first_table**

Но это, к сожалению, мне не помогло ... Кто-нибудь может мне помочь, пожалуйста, если что-то подобное можно сделать?

Заранее спасибо

1 Ответ

1 голос
/ 05 сентября 2011

Я не уверен, что понимаю ваш вопрос - хотите ли вы, чтобы OtherInformation передавалась другим автомобилям? Как и другие данные могут принадлежать много разных автомобилей?

Тогда вам нужны какие-то отношения многие ко многим. Прочитайте: http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many

РЕДАКТИРОВАТЬ (после прочтения ваших комментариев):

belongs_to car, :class_name => "Car", :foreign_key => "to_col1"
belongs_to another_car, :class_name => "Car", :foreign_key => "to_col2"

Это предполагает, что ваша OtherInformation имеет две колонки в таблице базы данных: to_col1 и to_col2 И вот как должны работать ассоциации:

other_info = OtherInformation.first
first_car = other_info.car
second_car = other_info.another_car
second_car_name = other_info.another_car.name
#etc...
...