У меня есть следующие данные:
- Пост под названием
Hello
имеет категории greet
- Еще одна запись под названием
Hola
имеет категории greet, international
Моя схема:
create_table "posts", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "categories", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "posts_categories", :force => true do |t|
t.integer "post_id"
t.integer "category_id"
t.datetime "created_at"
t.datetime "updated_at"
end
После прочтения руководства по Rails наиболее подходящим соотношением для вышеупомянутого является:
class Post < ActiveRecord::Base
has_and_belongs_to_many :categories
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :posts
end
Моя таблица соединений также имеет первичный ключ. Я думаю, что мне нужно избавиться от этого.
- Какая команда начальной миграции для создания таблицы соединений в Rails?
- Каков наилучший способ действий, я должен удалить
posts_categories
и воссоздать его или просто удалить столбец первичного ключа?
- Есть ли у соединительной таблицы соответствующая модель? Я использовал
scaffold
для генерации кода соединительной таблицы. Должен ли я избавиться от лишнего кода?
Предполагая, что все вышеперечисленное исправлено и работает должным образом, как мне запросить все сообщения и отобразить их вместе с именованными категориями в представлении. Например:
Post #1 - hello, categories: greet
Post #2 - hola, categories: greet, international