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

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

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

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

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

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

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

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

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

Другие вопросы по тегам