Ruby on rails 更新Rails中的嵌套资源更改其父资源
在我的应用程序中,我有一个非常具体的场景,用户必须将区域指定给一个区域 因此,在我的routes文件中,我声明了嵌套资源:Ruby on rails 更新Rails中的嵌套资源更改其父资源,ruby-on-rails,ruby-on-rails-3,activerecord,nested-attributes,Ruby On Rails,Ruby On Rails 3,Activerecord,Nested Attributes,在我的应用程序中,我有一个非常具体的场景,用户必须将区域指定给一个区域 因此,在我的routes文件中,我声明了嵌套资源: resource Territory resource Region end 在Territory模型中,我有: class Territory has_many :regions, :dependent => :destroy accepts_nested_attributes_for :regions end 对于这种情况,我需要用户能够通
resource Territory
resource Region
end
在Territory模型中,我有:
class Territory
has_many :regions, :dependent => :destroy
accepts_nested_attributes_for :regions
end
对于这种情况,我需要用户能够通过更新区域模型中的territory_id在区域之间重新分配区域
因此,如果我创建一个名为“East”的区域,然后将区域“New York”和“New Jersey”分配给它,我应该能够创建另一个区域,然后将“New York”分配给它,应用程序应该只将该区域的territory_id更改为新的区域
所有的逻辑都在Territions controller(我实际上没有regions controller)中,有一个小的静态区域集(西班牙省份),用户可以在编辑territory时添加或删除区域。我需要的是,当用户将一个区域添加到一个区域,并且这个区域已经被分配到另一个区域,而不是创建一个新的区域时,我希望rails更改该区域的区域id
每当我尝试这样做时,都会出现以下错误:
对于ID=14的区域,找不到ID=101的区域
有什么帮助吗?那不是我需要的。我在区域控制器中控制区域和区域的关联。例如,当用户编辑区域时,他可以从中添加或删除区域。
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