2012-07-22 32 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