【发布时间】:2011-11-30 03:48:53
【问题描述】:
我有一个User 模型belongs_to :location(即每个用户只能有一个位置,但一个位置可以由多个用户共享)。 users 表有一个 location_id 列来跟踪这一点。
但是,如果用户想要更改他们的位置,我相信 Rails 关联的默认行为是更改实际关联;但是,在这种情况下,我希望现有关联(即现有 Location 记录)保持不变,并创建一个新关联。
例如,假设我们有用户 Alice、Bob、Charley 和 Dave,他们都有location_id == 1,对应于位置 123 Sesame St. 然后当 Dave 将其位置更改为 124 Sesame St. 时,Location 1 不应受到任何影响或更改,Location 2 应使用新信息创建,并且 Dave 的用户记录已更新以反映 location_id 现在是 2 而不是 1。
我想在模型级别进行更改(大概是 User 模型),以便如果更改任何位置信息(User 也 accepts_nested_attributes_for :location),Location 关联会正确更新而不会覆盖现有信息。
有没有办法做到这一点,内置到 Rails 或插件中?
【问题讨论】:
标签: ruby-on-rails associations