2015-07-31 2 views
3

Прежде всего позвольте мне сказать, что я исхожу из рамки php oldschool и устаревшей практики, которую я изо всех сил пытаюсь их отменить. Когда PHP нашел ситуации N-N, я просто создал новую таблицу и был связан с этой новой таблицей 1-N. Пример:has_many: как это работает?

tbl_users 

tbl_posts 

отношений:

tbl_users N-N tbl_posts 

Так что я только что создали в новой таблице и сделал 1-N (отношение общей has_many). Пример:

tbl_users 1-N tbl_like_posts 

tbl_posts 1-N tbl_like_posts 

Я не знаю, было ли что-то эквивалентное, и я не пользовался, потому что меня никогда не взимали. Но реальность такова, что я посмотрел на has_many: через и не смог уловить это в голову. Почему я не могу делать то, что я делал раньше? Что: через специальные? Что это облегчит мне? Я даже понимаю, как использовать, но не понял, зачем использовать.

Прошу прощения, если вопрос был глупым, но я пытаюсь отказаться от PHP-зависимостей и правильно изучить рельсы.

ответ

2

У вас есть два варианта:

1) Пусть Rails разрешит его для вас, используя has_and_belongs_to_many ассоциации (под капотом, Rails будет создать новую таблицу, чтобы сделать много-ко-многим ассоциации, но вы не знаете нужно иметь дело с ним напрямую);

2) Указание, какие таблицы вы хотите использовать (как ты с помощью PHP), с помощью has_many :through

Вы можете проверить документы здесь: http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

Еще одна полезная ссылка должна быть эта RailsCast: http://railscasts.com/episodes/47-two-many-to-many

+0

Думаю, я понимаю. Когда я использую has_and_belongs_to_many, мне не нужно создавать таблицу для связи N-N, рельсы делают все для меня? –

+0

Отлично! Если у вас есть отношение «многие ко многим» между «пользователями» и «интересами», Rails создаст таблицу с именем «users_interests». –

Смежные вопросы