正在更新activerecord中的1:n:m关联
但这并没有自动处理所有的关联。 当我查询旧书架上的书时,它会返回我应该移到另一个书架上的书正在更新activerecord中的1:n:m关联,activerecord,associations,Activerecord,Associations,但这并没有自动处理所有的关联。 当我查询旧书架上的书时,它会返回我应该移到另一个书架上的书 我遗漏了什么?在执行book.shelf=new\u shelf 如果在更新之前已从数据库中取出旧工具架,则还必须在其上调用reload。执行book.shelf=new_shelf后是否调用save?如果在更新发生之前从数据库中取出了以前的工具架,您还必须调用重新加载。@AnthonyAlberto我现在感觉更笨了。。。是的,我错过了保存/重新加载。谢谢我想我期待着从ActiveRecord获得某种心灵
我遗漏了什么?在执行
book.shelf=new\u shelf
如果在更新之前已从数据库中取出旧工具架,则还必须在其上调用reload。执行
book.shelf=new_shelf
后是否调用save?如果在更新发生之前从数据库中取出了以前的工具架,您还必须调用重新加载。@AnthonyAlberto我现在感觉更笨了。。。是的,我错过了保存/重新加载。谢谢我想我期待着从ActiveRecord获得某种心灵感应。。。想把它作为一个答案来得到一些业力吗?
class Wall < ActiveRecord::Base
has_many :shelves
end
class Shelf < ActiveRecord::Base
has_many :book
belongs_to :wall
end
class Book < ActiveRecord::Base
belongs_to :shelf
end
CREATE TABLE `walls` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `shelves` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`wall_id` INT(11) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `books` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`shelf_id` INT(11) NULL DEFAULT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
book.shelf = new_shelf