bismoney
@bismoney

Ruby and Rail связать две таблицы?

Привет, делаю категории. Но никак не могу понять одной фишки.
Ниже я привел то что делаю.
Как видно я создал таблицу posts_category для категорий.

А на странице posts/new
мне выдается ошибка о отсутствии в базе таблицы categories.
Откуда она берется? Как заставить его кушать именно posts_category?

class CreatePostsCategory < ActiveRecord::Migration
  def change
    create_table :posts_category do |t|
      t.string :name
      t.integer :user_id

      t.timestamps
    end
  end
end


class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.integer :user_id
      t.string :title
      t.text :description
      t.belongs_to :category

      t.timestamps
    end
  end
end


class Posts < ActiveRecord::Base
  belongs_to :category
end


В шаблон
<%= f.collection_select :category_id, Category.order(:name), :id, :name %>
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
согласно конвенции rails не может быть таблички с именем posts_category

может быть post_categories - когда у одной категории много постов, связь 1 ко многим и могут быть таблицы categories и posts_categories - связь многие ко многим

Т.е в вашем случае скорее всего должна быть табличка post_categories и везде belongs_to :post_category
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ibub1ik
@ibub1ik
Ruby/Rails Dev => Elixir
Попробуй заменить t.belongs_to :category на t.belongs_to :category, references: :posts_categories.
Естественно, придется и в самих моделях указать правильный foreign_key и class_name, иначе работать не будет (несмотря на успешную миграцию). Помни, что Rails - это Convention Over Configuration, отступаешь от конвенций - будь добр указать кучу параметров (о существовании которых ты мог даже не подозревать).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы