ruby-on-rails - Rails-belongs_to 和 has_many(同一类)-如何访问父级和子级

标签 ruby-on-rails model has-many self belongs-to

我正在尝试构建一个引用同一模型的模型,问题是我无法访问父属性和子属性。

型号为:

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>

我找不到问题的解决方案,我是 Rails 新手。 抱歉我的英语不好,感谢您的帮助!。

[编辑] - 我尝试处理这种关系并且有效!!

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

最佳答案

您可以使用祖先 gem :https://github.com/stefankroes/ancestry 当你想要构建一个树形数据结构时。该模型应该有一个parent_id 和一个child_id。

其他可能性是使用自连接关系: http://guides.rubyonrails.org/association_basics.html#self-joins

关于ruby-on-rails - Rails-belongs_to 和 has_many(同一类)-如何访问父级和子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795541/

相关文章:

ruby-on-rails - 如何允许两个 Ruby 应用程序使用相同的模型?

ruby-on-rails - 在 Ruby on Rails 中使用 Docker 时控制台打印不出现

ruby-on-rails - rails : Multiple "types" of one model through related models?

python - 获取错误 AttributeError : 'bool' object has no attribute 'transpose' when attempting to fit machine learning model

ruby-on-rails - 在Rails中,如何建立具有范围的has_many关联

ruby-on-rails - Active Record 与 Postgres 和 Devise 的关系不起作用

ruby-on-rails - 如何根据参数动态访问实例变量[:controller]?

model - Netlogo 中是否可以创建由补丁颜色定义的边界?

ruby-on-rails - Ruby on Rails 'has_many :through' ,存储数据

ruby-on-rails - 如何 sanitizer 葡萄参数