2013-07-22 1 views
2

Я пытаюсь создать модель со ссылками на ту же модель, проблема в том, что я не могу получить доступ к родительским и дочерним атрибутам.Rails - принадлежит_to и has_many (тот же класс) - Как получить доступ к родителям и дочерним группам

модель:

class Socio < ActiveRecord::Base 
    attr_accessible :socio_padre_id 

    belongs_to :socio_padre, :class_name => "Socio", :foreign_key => "socio_id" 
    has_many :socios_hijo, :class_name => "Socio" 
end 

, когда я пытаюсь получить эти атрибуты в консоли я получаю:

1.9.2p320 :049 > Socio.last.socio (tab) 
Socio.last.socio       Socio.last.socio_padre_id?     Socio.last.socio_path 
Socio.last.socio=       Socio.last.socio_padre_id_before_type_cast Socio.last.socio_url 
Socio.last.socio_ids      Socio.last.socio_padre_id_change   Socio.last.socios 
Socio.last.socio_ids=      Socio.last.socio_padre_id_changed?   Socio.last.socios= 
Socio.last.socio_padre_id     Socio.last.socio_padre_id_was    Socio.last.socios_path 
Socio.last.socio_padre_id= 

1.9.2p320 :049 > Socio.last.socio_padre 
    Socio Load (1.0ms) SELECT "socios".* FROM "socios" ORDER BY "socios"."id" DESC LIMIT 1 
NoMethodError: undefined method `socio_padre' for #<Socio:0x00000004430fe0> 

Я не могу найти решение моей проблемы, им новое с рельсами. Извините за мой английский и спасибо за помощь !.

[EDIT] - Я стараюсь с этими отношениями и работает!

belongs_to :socio_padre, :class_name => "Socio" 
has_many :socios_hijo, :class_name => "Socio" , :foreign_key => "socio_padre_id" 

ответ

2

Вы можете использовать родословную камень: https://github.com/stefankroes/ancestry Как вы хотите, чтобы построить древовидную структуру данных. Модель должна иметь parent_id и child_id.

Другое вешать это использовать самостоятельно соединяет отношения: http://guides.rubyonrails.org/association_basics.html#self-joins