2011-07-28 28 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