У меня есть приложение Rails со следующим соотношением:Rails Преобразование отношений has_many в имеет и принадлежит многим
region.rb
class Region < ActiveRecord::Base
has_many :facilities
end
facility.rb
class Facility < ActiveRecord::Base
belongs_to :region
end
Я хочу немного расширить функциональность, чтобы объекты могли принадлежать более чем одному региону за один раз е. Я считаю, что могу сделать это с помощью отношений has_many_through, но мне нужно некоторое руководство по преобразованию существующего has_many в a. Я понимаю, как создавать и подключать таблицу соединений, но как я могу взять существующие данные и перевести их?
Так, например. На объекте объекта есть region_id
, так как объекты могут принадлежать более чем одному региону, мне, вероятно, понадобится поле region_ids
и выкопайте коллекцию регионов в этот столбец, который затем должен заполнить другую сторону ассоциации через таблицу соединений. У меня есть эта часть, в значительной степени выясненная, как двигаться вперед и подключить ассоциацию. Но я не уверен, как использовать существующие данные и переводить их, чтобы приложение не ломалось, когда я меняю ассоциацию модели.
Любые советы были бы весьма полезными.
Понял, у меня была эта часть и поняла, как подключить среднюю/объединенную таблицу, чтобы сделать работу ассоциации. Мой главный вопрос состоял в том, что после изменения миграции и моделирования модели, как я могу использовать существующие объекты и регионы и перенести все данные/столбцы, чтобы заполнить таблицу соединений? – nulltek
Благодарим за быстрый ответ, я попробую сегодня и отправлю любые вопросы, которые могут возникнуть у меня. – nulltek
Это сработало, однако мне пришлось реорганизовать migrate_database_state, чтобы не использовать find_by, поскольку это приложение Rails 3.2. Извините, я должен был указать. – nulltek