2015-01-18 2 views
0

Если я хочу иметь Модель HAS_ONE: model2 и model2 HAS_ONE: модель, я должен создать таблицу соединения тогда? Что-то вроде model_model2? И тогда таблицы выглядели бы так: Модель (id) и Model2 (id) и ModelModel2 (id, model_id, model2_id)?Rails: две модели «has_one» отношение

ответ

1

Вам просто нужно создать поле отношения, жена будет иметь :husband_id и муж будет иметь :wife_id
На самом деле вы можете создать его, используя только 1 поле, например, жена будет иметь :husband_id, и это все, и тогда соотношение будет быть

мужа одна жена
жена принадлежит мужу

И это все.

Если вы хотите попробовать таблицу брака между ними, вам необходимо создать объединение моделируют Marriage

class Marriage < ActiveRecord::Base 
    belongs_to :husband 
    belongs_to :wife 
end 

Затем создайте has_one :through отношение

class Husband < ActiveRecord::Base 
    has_one :wife, through: :marriage 
end 
class Wife < ActiveRecord::Base 
    has_one :husband, through: :marriage 
end 
+0

Я знаю belong_to/HAS_ONE отношение. К вашему первому предложению: Вы имеете в виду добавить идентификаторы и has_one отношение к обеим моделям? Я спрашиваю, почему я задавался вопросом, могу ли я использовать has_one в двух моделях (не: принадлежать_to/has_on). ;-) просто интересно, каковы возможности –

+0

Я не уверен, что если бы это было недействительное отношение или нет, но если вы хотите попробовать, вы должны добавить поля id к обоим моделям, затем попробуйте 'has_one' на обоих и если он не работает, вы можете попробовать 'принадлежит_то' на обоих. –

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