2013-04-29 26 views
0

我在解决这个问题时遇到了麻烦,因此我也无法找到答案。希望有人能帮助我说得更好。无论如何,我找不到任何标准的程序来管理给定数据库行与可能存在或可能不存在的另一行的重新关联。例如,假设我们有两种模式:如何在rails 3.2中重新关联数据库对象与另一个数据库对象

class Residence < ActiveRecord::Base 
    belongs_to :zipcode 
end 

... 

class Zipcode < ActiveRecord::Base 
    has_many :residences 
end 

现在说我的数据被搞砸了,我想更改住所的邮政编码。我不能只为它制作一个标准的导轨形式,因为我不想更改邮编本身(即,将id = 1的邮政编码改为90210而不是90123),我想用一个新的邮政编码重新关联住所可能已经或可能不在数据库中。

我可以想到很多方法来做到这一点,但它似乎是人们可能总是希望与多对一关系做的事情,我想学习“最佳实践”方法来做到这一点。

谢谢!

回答

0

由于没有人回复,我已经移动了,我想我会分享我决定处理这个问题的技术。由于我需要在参数数组中返回一个id(可能是最终用户从未真正看到的),唯一干净的方法是使用对zipcodes表的AJAX调用来获取不同的zipcode ID。实际上,住所表单中包含一个任意命名的输入元素,用于允许用户输入邮政编码并从返回的列表中进行选择。如果他从列表中选择了一个邮政编码,那么它的ID就会填入与表单一起发送的隐藏字段中。如果不是,则在表单提交后创建(验证)邮政编码,然后在居住对象上调用update_attributes()之前将其ID添加到params数组中作为zipcode_id字段。

如果有人知道更好的方法来做到这一点,请分享。虽然这对我来说很好。