2016-03-07 3 views
0

Я создал модель в Ruby On Rails приложения rails g model subject_structure name:string abbreviation:stringМодель ассоциации не работает

Я создал соотношениям

class SubjectStructure < ActiveRecord::Base 
    has_many :subjects 
end 

class Subject< ActiveRecord::Base 
    belongs_to :subject_structure 
end 

Когда я запустить приложение я получаю ошибку undefined method subject_structure for #<Subject:0x9d3aa78>

Im Создание приложение для существующей базы данных, в которой уже есть таблицы с данными.

+1

Добавить пробел между 'belongs_to' и': subject_structure'. Также вы не создали столбцы foreign_key, поэтому ваши ассоциации не будут работать. – BroiSatse

+0

Я сделал это, но что-то еще кажется проблемой. Я не думаю, что мне нужно запустить 'rake db: migrate', потому что у меня уже есть таблица в базе данных. – juan

+0

Как эта таблица появилась там без миграции? – BroiSatse

ответ

1

Добавить пробел после владельца.

Должно быть

class Subject < ActiveRecord::Base 
    belongs_to :subject_structure 
end 
+0

да, я исправил это, но я получаю ту же ошибку – juan

+0

Я бы попробовал запустить консоль с рельсами c. Попробуйте 'SubjectStructure.subjects' и посмотрите, возвращает ли это что-либо, а затем попробуйте' Subject.subject_structure'. Вы также можете запустить 'rake db: migrate: status', чтобы убедиться, что ваши миграции активны. – Hopscott

0

Там в пространство отсутствует на belongs_to:

class Subject< ActiveRecord::Base 
    belongs_to :subject_structure 
end 

Кроме того, Subject должны foreign_key для SubjectStructure. Выполнить эту миграцию, чтобы создать его:

rails g migration AddSubjectStructureIdToSubject subject_structure_id:integer 
+0

Тема уже имеет столбец 'subject_structure_id' – juan

0

Добавить место как:

class Subject < ActiveRecord::Base 
belongs_to :subject_structure 
end