Соглашение об именах моделей Rails - PullRequest
1 голос
/ 17 ноября 2011

У меня есть приложение, которое имеет projects и users.Меня не волнует отслеживание отношений «многие ко многим» между users и projects, но меня интересует отслеживание отношений «многие к одному» между projects и конкретным user, которым является проектменеджер.В идеале я хотел бы создать столбец в таблице projects с именем projectmanager_id и связать его с user.Тем не менее, соглашение rails требует, чтобы я использовал user_id вместо этого.Хотя это работает, я чувствую, что семантика не совсем верна.Есть ли способ иметь оба?

Один из способов, о котором я подумал, - это создать таблицу projectmanagers с user_id и project_id и иметь has_many :projects, :through=> :projectmanagers в модели user и has_one :user, :through => :projectmanagers в модели project,Есть ли лучший способ?

1 Ответ

1 голос
/ 17 ноября 2011

Вы можете попробовать это, если сохраните столбец db как user_id: В вашем файле project.rb:

own_to: projectmanager,: foreign_key => "user_id",: class_name => "User"

А в вашем файле user.rb еще есть:

has_many: проекты


Или, если вы хотите, чтобы ваш столбец БД был projectmanager_id

В вашем файле project.rb:

own_to: projectmanager,: foreign_key => "projectmanager_id",: class_name => "Пользователь"

В вашем файле user.rb:

has_many: projects,: foreign_key => "projectmanager_id",: class => "Project"

...