【问题标题】:How to reassociate a database object with another one in rails 3.2如何在rails 3.2中将数据库对象与另一个数据库对象重新关联
【发布时间】:2013-04-29 21:41:30
【问题描述】:

我在表述这个问题时遇到了困难,因此我也很难找到答案。希望有人可以帮助我更好地表达它。无论如何,我找不到任何标准程序来管理给定数据库行与可能已经存在或可能不存在的另一行的重新关联。例如,假设我们有两个模型:

class Residence  < ActiveRecord::Base
  belongs_to :zipcode
end

...

class Zipcode < ActiveRecord::Base
  has_many :residences
end

现在说我的数据搞砸了,我想更改住宅的邮政编码。我不能只为它制作一个标准的 rails 表格,因为我不想更改邮政编码本身(即,将 id=1 的邮政编码更改为 90210 而不是 90123),我想将住宅与一个新的邮政编码重新关联可能已经在数据库中,也可能不在数据库中。

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

谢谢!

【问题讨论】:

    标签: ruby-on-rails-3.2 rails-activerecord


    【解决方案1】:

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

    如果有人知道更好的方法,请分享。不过,这对我来说效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 2023-01-26
      • 1970-01-01
      • 2017-02-14
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      相关资源
      最近更新 更多