2014-09-24 3 views
2

Я пытаюсь создать модель, которая является родителем для других пользователей. Вот что я прямо сейчас:Пользовательские отношения с другими пользователями

Модели:

class User < ActiveRecord::Base 
. 
. 
. 
    has_one :guardian_of_child 
end 


class GuardianOfChild < ActiveRecord::Base 

    belongs_to :user, foreign_key: "guardian_id" 
    has_many :users, foreign_key: "child_id" 

end 

миграции:

class CreateGuardianOfChildren < ActiveRecord::Migration 
    def change 
    create_table :guardian_of_children do |t| 
     t.references :user, index: true 

     t.timestamps 
    end 
    end 
end 

Когда я пытаюсь получить доступ к 'guardian_id' или 'child_id'

<% @guardian_of_children.each do |guardian_of_child| %> 
    <tr> 
    <td><%= guardian_of_child.user.guardian_id %></td> 

это дает мне эту ошибку:

undefined method `guardian_id' for nil:NilClass 

Что я делаю неправильно? Может ли кто-нибудь помочь мне?

+0

Не могли бы вы уточнить отношения, которые вы пытаетесь моделировать? Это не ясно из ассоциации, которую вы заявляете. Например, отношение has_many должно иметь принадлежность к другой стороне. Кроме того, было бы неплохо отладить то, что ничто. например, оставить guardian_id и посмотреть, отображается ли какой-либо пользователь. – superuseroi

+0

Можете ли вы предоставить struct.sql или schema.rb, пожалуйста? –

ответ

0

Я получил его для работы. В принципе модель родительского отношения к ребенку.

class User < ActiveRecord::Base 

    has_many :guardian_of_children, foreign_key: "guardian_id" 
    has_many :child_of_guardians, class_name: "GuardianOfChild", foreign_key: "child_id" 

    end 

    class GuardianOfChild < ActiveRecord::Base 

    belongs_to :guardian, class_name: 'User', foreign_key: 'guardian_id' 
    belongs_to :child, class_name: 'User', foreign_key: 'child_id' 

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