【问题标题】:Update nested resource in Rails changing its parent更新 Rails 中的嵌套资源更改其父级
【发布时间】:2012-03-13 13:17:23
【问题描述】:

我的应用程序中有一个非常具体的场景,用户必须将 REGIONS 分配给 TERRITORY。

所以在我的路由文件中我声明了嵌套资源:

resource Territory
    resource Region
end

在领土模型中我有:

class Territory
   has_many :regions, :dependent => :destroy
   accepts_nested_attributes_for :regions
end

对于这种情况,我需要用户能够通过更新区域模型中的区域 ID 来重新分配区域之间的区域。

所以,如果我创建一个名为“East”的区域,然后将区域“New York”和“New Jersey”分配给它,我应该能够创建另一个区域,然后将“New York”分配给它,然后应用程序只应将区域的区域 ID 更改为新的。

所有逻辑都在区域控制器中(我实际上没有区域控制器),有一小部分可能的区域(西班牙省份)静态,用户可以在编辑区域时添加或删除区域。我需要的是,当用户将一个区域添加到一个区域并且该区域已经分配给另一个区域时,而不是创建一个新区域,我希望 rails 更改该区域的区域 ID。

每当我尝试这样做时,都会收到以下错误:

无法为 ID=14 的区域找到 ID=101 的区域

有什么帮助吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord nested-attributes


    【解决方案1】:
    class Region < ActiveRecord::Base
      belongs_to :territory
    end
    

    old_territory = Territory.create :name => "East"
    new_territory = Territory.create :name => "other"
    new_york = old_territory.regions.create :name => "New York"
    new_york.update_attributes :territory => new_territory
    

    【讨论】:

    • 这不是我需要的。我在区域控制器中控制区域和区域的关联。例如,当用户编辑一个地区时,他可以在其中添加或删除地区。
    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多