0
什么是解决这类查询的最佳方式:的has_many:通过查询基础上,“桥”模型的财产
- 每个组都有很多地区
- 每个州都有许多地区
- 每组通过各区
- 每个区都属于一个成员都有许多国家
集团1 - *区(属于一个成员)* - 1州
我想查找一个特定组的状态列表,其中其区域的至少一个未分配给成员(即,区的member_id为空)。换句话说,如果该州的所有地区都被分配给一个会员,那么该州就不会出现在我的名单中。
class State < ActiveRecord::Base
has_many :districts
end
class Group < ActiveRecord::Base
has_many :districts
has_many :states, :through => :districts, :uniq => true
end
class District < ActiveRecord::Base
belongs_to :state
belongs_to :group
belongs_to :member
end
我想要在我看来做到的是让用户首先选择他的组,然后选择他想从工作状态,最后是基于他的研究小组填充可用区,状态选择。所以基本上我不希望州列表包括没有可用区的州。
编辑:
,我想出了一个可行的办法是在我Group
类来定义新的方法,请告诉我,如果这是一个很好的解决方案:
class Group < ActiveRecord::Base
...
def available_states
result = []
self.states.each do |state|
state_list = state.districts & self.districts.where(:member_id => nil)
if !state_list.empty?
result << state
end
end
result
end
end
好看起来神奇公式使用。集团和.map,两种方法我不知道会解决我的问题!谢谢。现在我要尝试使用示波器的想法! – cyehia
尼斯:-)希望它能解决问题 – numbers1311407