2013-10-11 4 views
0

У меня есть некоторые проблемы с пониманием отношения has_one.Не могу понять has_one отношение

У меня есть две модели: Planning и Sport. A Planning касается одного Sport и Sport можно найти во многих Planning с. Поэтому я определил мой Planning так:

class Planning 
    ... 
    has_one :sport 
    ... 
end 

И я ничего не добавил в Sport относительно Planning. На мой взгляд, это позволило бы мне получить доступ к planning.sport, но я не против, если не могу найти sport.plannings (что не имеет смысла).

Проблема заключается в том, что, когда я пытаюсь создать новый Planning используя свой интерфейс ActiveAdmin, я следующее сообщение об ошибке, как только я пытаюсь получить доступ к plannings/new странице:

undefined method `planning_id' for #<Planning:0x30d8570> 

То, что я понимаю, что это чеки в Sport что planning_id существует, но мое понимание было то, что было только в Planning, а не напротив sport_id ...

что я сделал не так? Нужно ли использовать промежуточную модель? Связано ли это jsut с ActiveAdmin?

Спасибо!

ответ

3

Что вам нужно

class Planning 
    ... 
    belongs_to :sport 
    ... 
end 

class Sport 

    has_many: plannings 
end 

Вы можете думать о нем, как тот, кто имеет внешний ключ, как ребенок. Таким образом, здесь планирование имеет внешний ключ спорта. Так что это ребенок спорта, и он относится к спорту.

+0

Ничего себе, я не могу поверить, что это было так просто ... Спасибо Vimsha! Я был уверен, что испытал это. Я понимаю, что мне еще предстоит многое сделать, чтобы полностью понять логику Rails! – jbihan

Смежные вопросы