我有一个名为Area的模型。区域可以是州,县,镇或建筑物。区域的所有对象,无论是州,县,镇还是建筑物,都具有相同的字段(名称,描述和注释)。
不同类型的区域之间没有不同的功能或行为。这些类型仅用于创建关系。
一个州拥有县,一个县拥有城镇等。这用于直观地表示,组织和过滤区域。因此,用户可以看到县的类型区域的显示视图,并查看属于该县的所有城镇的列表,还可以查看它所属的州。他们可以单击它所属的州,然后查看该州的所有县。他们也可以点击一个城镇,看看该镇的所有建筑物。
这是我的区域架构:
create_table "areas", force: true do |t|
t.string "name"
t.text "description"
t.text "notes"
t.datetime "created_at"
t.datetime "updated_at"
t.string "area_type"
t.string "type"
end
正如您所看到的,我已经在尝试使用STI和常规字符串(area_type)。我没有决定或想出哪一个在这种情况下是最好的,尽管从我的研究中我更倾向于使用area_type而不是STI,因为任何类型的数据模型之间没有区别。
这是我的Area.rb模型:
class Area < ActiveRecord::Base
class << self
def area_types
types_array = [
['State'],
['County'],
['Town'],
['Building']
]
end
end
end
class State < Area
has_many :counties
end
class County < Area
has_many :towns
belongs_to :state
end
class Town < Area
has_many :buildings
belongs_to :county
end
class Place < Area
belongs_to :town
end
我是rails的新手并且正在努力做出正确的选择以正确构建这个,对此有任何建议或帮助吗?请尽可能具体,因为我对铁轨并不是非常了解。我觉得我很接近,但只是不知道如何将所有剩余的部分包装在一起。谢谢!