Я плохо знаком с Ruby и направляющими, так терпите меня. Я создал очень простое приложение блога и с сообщениями и с комментариями. Все работает отлично. Мой следующий вопрос относительно добавляющих категорий. Я задаюсь вопросом лучший способ сделать это. Как я еще не вижу слишком далеко передо мной когда дело доходит до направляющих, я думал, что спрошу.
Чтобы быть ясным, я хотел бы это, единственное сообщение может иметь несколько категорий, и категория может иметь несколько сообщений.
Лучший способ состоит в том, чтобы сделать это, чтобы составить таблицу 'категорий' и затем использовать сообщения и модели категорий, чтобы сделать has_many :posts
, has_many :categories
? Я также затем установил бы routes.rb
таким образом, что сообщения встраиваются под категориями?
Или есть ли более легкий путь путем простого добавления столбца категорий к существующей таблице сообщений? (в этом случае я предположил бы иметь несколько категорий, будет трудным).
Поскольку вам нужна связь "многие ко многим" между категориями и сообщениями, я бы (и использую) использую плагин тегов, такой как ActsAsTaggableOn , где вы можете определить, к чему относится «тег», и назвать его «категорией». Просто и эффективно. В своей форме вы можете ограничить возможные значения для «тега» с помощью белого списка (например, «кодирование», «рецепты», «отпуск») для различных категорий.
Это зависит от того, сколько усилий вы готовы приложить - вы можете использовать плагин тегов или настроить has_and_belongs_to_many
в моделях «Сообщения» и «Категории», но я бы порекомендовал немного другое.
Если вы создадите третью модель, «Категоризацию», как своего рода «клей» между сообщениями и категориями, у вас будет больше контроля. Сообщение has_many: Categories: through => категоризации
и Категория has_many: posts: through =>: категоризации
Преимущество этого заключается в том, что ваши категории не хранятся в вашем коде, а скорее в базе данных - поэтому добавление / удаление / редактирование их не требует изменения исходного кода. Как вы настраиваете маршруты, полностью зависит от вас - вы могли бы / Categories /: id
вернуть список всех сообщений, которые принадлежат к этой категории, или реализовать какую-то форму поиска с использованием одной или нескольких категорий. как параметры.
У Райана Бейтса есть отличный скринкаст , объясняющий все это, с несколькими различными способами решения проблемы.
Я знаю, что вы упомянули, что новичок в RoR, поэтому прошу прощения, если это немного сложно для того, что вы хотите. Как я уже сказал, плагин может быть лучшим для ваших нужд, но я считаю, что всегда приятно, если возможно, написать его самостоятельно, с дополнительным преимуществом большей гибкости и контроля :)