Rails 2.3.8 Задача ассоциации has_many принадлежит_to - PullRequest
2 голосов
/ 29 августа 2010

Я новичок в Rails. У меня есть две модели, Персона и День.

class Person < ActiveRecord::Base
  has_many :days
end

class Day < ActiveRecord::Base
  belongs_to :person
  has_many :runs
end

Когда я пытаюсь получить доступ к @ person.days, я получаю ошибку SQL:

$ script/consoleLoading development environment (Rails 2.3.8)
ree-1.8.7-2010.02 > @person = Person.first
=> #<Person id: 1, first_name: "John", last_name: "Smith", created_at: "2010-08-29 14:05:50", updated_at: "2010-08-29 14:05:50"> ree-1.8.7-2010.02 
> @person.days
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: days.person_id: SELECT * FROM "days" WHERE ("days".person_id = 1) 

Я установил связь между ними перед выполнением любых миграций, поэтому не понимаю, почему это не было правильно настроено.

Есть предложения?

1 Ответ

3 голосов
/ 29 августа 2010

Рассказ вашей модели об ассоциации не устанавливает внешний ключ в базе данных - вам нужно создать явную миграцию, чтобы добавить внешний ключ в любую таблицу.

Для этого я быпредложить:

скрипт / сгенерировать миграцию add_person_id_to_days person_id: integer

, затем посмотрите на файл миграции, который он создает для вас, чтобы убедиться, что он в порядке, он должен выглядеть примерно так:1008 *

Запустите это и попробуйте снова ассоциацию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...