2011-07-28 31 views
2

我有一個用戶郵政編碼的自動填充字段。自動完成從zip_codes表(其中還包含每個郵政編碼的lat和long)。rails隱藏字段和或sql數據庫關係

但是,我希望它在提交表單時可以在後臺保存用戶經緯度座標。有沒有我可以設置的數據庫關係或者我的模型中的某些內容來做類似的事情?

回答

1

如何使?:

在你的模型:

before_save :populate_lat_and_long, :if => :changing_zipcode? 

... 
private 

def changing_zipcode? 
    self.zipcode_changed? 
end 

def populate_lat_and_long 
    entry = ZipCode.where(:zipcode => self.zipcode).first 
    self.lat, self.long = entry.lat, entry.long 
end 

/移除了拉鍊碼

0

如果您的表單設置爲僅通過params散列發送郵政編碼,那麼爲什麼不在您的控制器中查找該郵政編碼,然後執行model.save。在調用保存函數之前,沒有什麼說你不能在控制器中手動修改模型對象。或者,如果您遵循薄控制器,厚模型範例,則此代碼將在您的模型中使用。您應該可以覆蓋user.zip的屬性訪問器來自動填充user.lat和user.long。

+0

什麼辦法可以讓我的模型代碼如何保存屬性的快速珍聞多? :) 非常感謝你的幫助! – stewart715