我在这个小问题上被困了几个小时,如果有人能提供帮助,我会感激不尽。
我的最终目标是获取所有独特的状态,并将其中的每个状态与其页面相关联,该页面将显示此州所属的所有社区。 p>
我试过摆弄2个替代方案,alt.1给了我一个数组,这使得它很容易融入.each循环但没有id来查找社区。 alt.2给了我id&状态,但输出的格式是我无法识别的。
# model
class Community...
has_one :location
class Location...
belongs_to :community
# view
# alt.1
Location.pluck("DISTINCT state")
# alt.2
Location.select('distinct on(state) id, state')
=> [#<Location id: 2, state: "Oakland">, #<Location id:4, state: "South Carolina">]
对这两种或替代替代品的解决方案表示赞赏。
答案 0 :(得分:0)
有几件事:
1)正如Athar所说,第二个是正确的,它们是主动记录对象。更积极的记录方式是Location.select('state').uniq.map(&:state)
,它将返回一组状态。
2)阅读http://guides.rubyonrails.org/active_record_querying.html - 我认为select
不符合你的想法。
3)将来使用状态表可能会很有用,您显然不需要使用迁移中的初始值填充状态表,而只需将其作为字符串列放在位置上。然后,您可以强制某个位置引用现有状态。