0
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

但这不会自动处理所有关联。当我在旧书架上查询书籍时,它会返回我应该移动到另一个书架的书。

我错过了什么?

4

1 回答 1

1

完成后调用保存book.shelf = new_shelf

如果在更新发生之前从数据库中拉出它,您还必须在前一个架子上调用 reload。

于 2012-09-10T21:24:28.343 回答