提问人:kael 提问时间:4/30/2013 更新时间:5/1/2013 访问量:61
如何在 rails 3.2 中将一个数据库对象与另一个数据库对象重新关联
How to reassociate a database object with another one in rails 3.2
问:
我在表达这个问题时遇到了困难,因此我也很难找到答案。希望有人能帮我更好地表达。无论如何,我找不到任何标准过程来管理给定数据库行与另一个可能已经存在或可能不存在的行的重新关联。例如,假设我们有两个模型:
class Residence < ActiveRecord::Base
belongs_to :zipcode
end
...
class Zipcode < ActiveRecord::Base
has_many :residences
end
现在假设我的数据被搞砸了,我想更改住宅的邮政编码。我不能只为它制作一个标准的 rails 形式,因为我不想更改邮政编码本身(即,将 id=1 的邮政编码更改为 90210 而不是 90123),我想将住所与可能已经在数据库中也可能不在的新邮政编码重新关联。
我可以想出很多方法来做到这一点,但这似乎是人们可能总是希望通过多对一关系来做的事情,我想学习“最佳实践”方法来做到这一点。
谢谢!
答:
0赞
kael
5/1/2013
#1
由于没有人回应,而且我已经继续前进了,我想我会分享我决定处理这个问题的技术。由于我需要在参数数组中发回的是一个 ID(可能是最终用户从未真正看到过的东西),因此唯一干净的方法是使用对邮政编码表的 AJAX 调用来获取不同的邮政编码 ID。 实际上,居住表单包含一个任意命名的输入元素,该元素允许用户输入邮政编码并从返回的列表中进行选择。如果他从列表中选择了一个邮政编码,则其 ID 将填充在与表单一起发送的隐藏字段中。如果没有,则在提交表单时创建(并验证)邮政编码,然后在调用 residence 对象之前将其 ID 作为 zipcode_id 字段添加到 params 数组中。update_attributes()
如果有人知道更好的方法,请分享。不过,这对我来说效果很好。
评论