rails n:m как иметь ассоциации rails, когда имена таблиц db разные

У меня есть проект, который не соответствует соглашениям об именах рельсов, потому что это невозможно для особого случая.

Сценарий: у меня есть модель с именем Foo и таблица базы данных для этой модели с именем example_foos. У меня есть модель с именем Bar и таблица базы данных для этой модели с именем example_bars.

Я хочу создать связь n:m между этими двумя моделями с моделью FooBar. Имя таблицы базы данных для этой модели — ExampleFooExampleBars.

Теперь мой вопрос. Как я могу указать сквозную ассоциацию has_many в моделях? Если я делаю это как обычно, я получаю ошибки, потому что имена модели и таблицы разные.


person Matthias    schedule 21.05.2012    source источник
comment
Пожалуйста, покажите ваш текущий код, который получает ошибки.   -  person Michael Durrant    schedule 22.05.2012


Ответы (2)


Ассоциации ссылаются на имена классов, поэтому:

class Foo < ActiveRecord::Base
  set_table_name 'example_foos'
  has_many :bars
end

class Bar < ActiveRecord::Base
  set_table_name 'example_bars'
  belongs_to :foo
end
person Michael Durrant    schedule 21.05.2012

Если ваша модель и таблица имеют другое имя, вы можете

class Foo <ActiveRecord::Base
  set_table_name "example_foos"
end

остальная часть ассоциации в соответствии с соглашением о рельсах

person Amar    schedule 21.05.2012