rails隐藏字段和/或SQL数据库关系

时间:2011-07-28 03:15:28

标签: mysql sql ruby-on-rails ruby ruby-on-rails-3

我有一个用户邮政编码的自动填充字段。自动完成功能来自zip_codes表(每个邮政编码也包含lat和long)。

但是,我希望它在提交表单时将用户lat和long坐标保存在后台。我可以在我的模型中设置数据库关系或做某事吗?

2 个答案:

答案 0 :(得分: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

/从zipcodes中删除复数

答案 1 :(得分:0)

如果您的表单设置为仅通过params散列发送邮政编码,为什么不在控制器中对该zip进行查找,然后执行model.save。在调用保存功能之前,没有任何内容表明您无法在控制器中手动修改模型对象。

或者,如果你正在关注瘦控制器,厚模型范例,那么这个代码就会出现在你的模型中。您应该覆盖user.zip的属性访问器以自动填充user.lat和user.long。