有三种型号:Country
,City
和Plan
。
计划可以与国家或城市相关联。如果城市有计划,那么返回那些计划。如果城市没有计划,那么返回该城市的国家计划。
例如:
United_Kingdom
有三个计划:uk_default_1
,uk_default_2
,uk_default_3
。
London
有两个计划:london_1
,london_2
。
Leeds
没有关联的计划。
London
和Leeds
属于United_Kingdom
。
我想实现:
London.plans # [london_1, london_2]
Leeds.plans # [uk_default_1, uk_default_2, uk_default_3]
我开始定义以下关系:
class Country < ActiveRecord::Base
has_many :cities
end
class City < ActiveRecord::Base
belongs_to :country
has_many :plans
end
class Plan < ActiveRecord::Base
belongs_to :country
belongs_to :city
end
但我不知道怎么离开这里。我怎样才能以铁轨的方式做到这一点?
答案 0 :(得分:0)
我可能只是在城市模型中制作并使用新方法active_plans
,如果存在,将返回城市规划,如果不存在则返回国家计划......
class Country < ActiveRecord::Base
has_many :cities
has_many :plans # added to support "country.plans in City model"
end
class City < ActiveRecord::Base
belongs_to :country
has_many :plans
def active_plans
return plans if plans.present?
return country.plans
end
end