Pet*_*all 18 ruby ruby-on-rails ruby-on-rails-3
我有树结构的类别.我试图通过为每个人定义父母来将他们联系在一起.(我无法弄清楚如何调用该属性parent所以它只是暂时category,但它意味着父母).
class Category < ActiveRecord::Base
has_one :category # the parent category
end
Run Code Online (Sandbox Code Playgroud)
但这种关系最终走错了方向.
getter函数在子类别上(正确)但category_id存储在父类中:
parent = Category.create(:name => "parent")
child = Category.create(:name => "child", :category => parent)
parent.id # 1
child.id # 2
child.category_id # nil
parent.category_id # 2
child.category.name # "parent" (!!)
Run Code Online (Sandbox Code Playgroud)
父母需要能够有多个孩子,所以这不会起作用.
cor*_*ard 35
您正在寻找的是自我加入.请查看Rails指南的这一部分:http://guides.rubyonrails.org/association_basics.html#self-joins
class Category < ActiveRecord::Base
has_many :children, class_name: "Category", foreign_key: "parent_id"
belongs_to :parent, class_name: "Category"
end
Run Code Online (Sandbox Code Playgroud)
每个类别belong_to都是父母,甚至是您的父类别.您可以创建最高级别类别所属的单个类别父级,然后您可以忽略应用程序中的该信息.
| 归档时间: |
|
| 查看次数: |
14550 次 |
| 最近记录: |