0

我正在尝试使用 Rails4 创建具有树结构的简单地理模型。每个区域都有一个父区域,并且可以有多个子区域。

class Region < ActiveRecord::Base
has_many :regions, belongs_to :region, dependent: :destroy
end

架构:

create_table "regions", force: true do |t|
  t.string   "name"
  t.string   "description"
  t.integer  "region_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

不幸的是,这样的代码不起作用。我应该怎么办?

4

3 回答 3

1

我想,你正在寻找一个自我加入的关系。尝试这个 :

class Region < ActiveRecord::Base
  has_many :child_regions, class_name "Region", foreign_key: "parent_id" dependent:   :destroy      
  belongs_to :parent, class_name: "Region"  
end

您的架构中也应该有一个parent_id。谢谢

于 2013-08-22T10:18:52.103 回答
0
class Region < ActiveRecord::Base
  has_many :regions, dependent: :destroy
  belongs_to :region
end

当然region_id,您的表中还需要整数列regions

于 2013-08-22T10:13:09.597 回答
0

我假设 Rails4 在这种情况下与 Rails3 一样工作:

class Region < ActiveRecord::Base
    has_many   :regions, dependent: :destroy
    belongs_to :region
end

has_many并且belongs_to是 Region 的类/单例方法。Aa 这样您就不能将其中一个用作另一种方法的参数。

于 2013-08-22T10:16:15.623 回答