sha*_*evy 2 ruby-on-rails ruby-on-rails-4
基于http://guides.rubyonrails.org/association_basics.html#self-joins
我创建了一个名为Category的自连接模型
rails g model Category name parent_id:integer
Run Code Online (Sandbox Code Playgroud)
我将模型category.rb更改为如下所示
Class Category < ActiveRecord::Base
has_many :sub_categories, class_name: "Category", foreign_key: "parent_id"
belongs_to :parent_category, class_name: "Category"
end
Run Code Online (Sandbox Code Playgroud)
现在在控制台中我创建了两个Category的记录
a = Category.create(name: "Animal")
b = Category.create(name: "Dog")
a.sub_categories << b
a.save
Run Code Online (Sandbox Code Playgroud)
现在
a.sub_categories # returns Dog
Run Code Online (Sandbox Code Playgroud)
然而
b.parent_category # returns nil
Run Code Online (Sandbox Code Playgroud)
如何让parent_category正确返回单个父记录?
如果我这样做的话 b.parent_category = a
我收到以下错误
ActiveModel::MissingAttributeError: can't write unknown attribute 'parent_category_id'
Run Code Online (Sandbox Code Playgroud)
您需要修改关联parent_category.
你必须指定外键.
belongs_to :parent_category, class_name: "Category", foreign_key: 'parent_id'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |