2012-07-22 37 views
3

我有一个名为Locality的模型,它基本上是一个城市(或大城市内的一个郊区)。Rails模型中的附近地区

每个地方都有一个相邻地区的简短列表 - 这有助于搜索。

我已经阅读了几十篇关于自引用has_many:,通过关联等的文章,但我仍然无法解决这个问题。

基本上我想直到结束的是:

l = Locality.find(1) 
n = l.nearby_localities 
# n should now hold a list of Locality ids 

什么是做这个的最好方法是什么?

+0

本文解释如何实现多对多的自引用:http://szeryf.wordpress.com/2007/06/27/self-referential-many-to-many-relations-in-ruby- on-rails/ – Mischa 2012-07-22 06:04:29

回答

1

你如何确定nearby_localities

其实,你可以让它变成一个简单的方法。

class Localities < ActiveRecord::Base 

    # Previous Code ... 

    def nearby_localities 
    # Implementation here. 
    end 

end 

保持简单!

+0

'nearby_localities'是一个静态的,精心编辑的局部ids列表。给出你的答案,以及我对Ruby/Rails的新鲜感,我的直觉就是在列中保存一个以逗号分隔的ID列表,并用这种方法检索并解析它们到其他地方的数组中。这听起来合理吗? – 2012-07-22 05:57:39

+0

@CalebFidecaro:你想查询附近的位置吗?如果是这样,一个逗号分隔列表是一个坏主意。您最好将位置之间的关系存储在单独的数据库表中。 – Mischa 2012-07-22 06:01:22

+0

是的,这将工作。您可以将地区标识符序列化为数组。请记住,该列的类型应该是“文本”。欲了解更多信息,请查看:http://apidock.com/rails/ActiveRecord/Base/serialize/class – 2012-07-22 06:05:24