объединение таблиц и отношения has_many не работают - PullRequest
1 голос
/ 30 сентября 2011

У меня есть два элемента: пользователи и сообщения, и таблица соединений, связывающая их вместе.Два элемента имеют отношение has_many друг к другу (через таблицу соединений).Я создал таблицу соединений после создания двух баз данных.У меня проблема в том, что я получаю ошибки каждый раз, когда пытаюсь что-то сделать с @ user.posts или @ post.users.Это почти как будто они настроены неправильно.Где-то я читал, что если вы создаете ассоциацию после создания модели, то вы должны использовать метод add_column.Это моя проблема?Я не был уверен, как реализовать этот метод или что-то еще.Это ошибка, которую я получаю:

SQLite3 :: SQLException: нет такого столбца: users.post_id: ВЫБРАТЬ "users". * FROM "users" WHERE "users". "Post_id" = 60 AND "users". "id" =?LIMIT 1

Похоже, из ошибки мне нужно добавить столбец, но я не уверен, как это сделать.

вот моя последняя схема.db:

ActiveRecord::Schema.define(:version => 20110930155455) do

  create_table "posts", :force => true do |t|
    t.text     "content"
    t.integer  "vote_count"
    t.text     "author"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "user_id"
  end

  create_table "users", :force => true do |t|
    t.string   "user_name"
    t.string   "password"
    t.date     "time"
    t.integer  "posts_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "post_id"
  end

  create_table "votes", :force => true do |t|
    t.integer  "post_id"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

1 Ответ

0 голосов
/ 30 сентября 2011

Да, вам нужно создать миграцию для внешних ключей.Вам необходимо добавить post_id в таблицу: users с типом integer.Выполните

rails g migration AddPostIdToUsers post_id:integer

, чтобы сгенерировать миграцию.Вам следует создать такой файл, который выглядит как

class AddPostIdToUsers < ActiveRecord::Migration
  def change
    add_column :users, :post_id, :integer
  end
end

Возможно, вы захотите настроить * has_many: благодаря ассоциации * это даст вам больше контроля.

...