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 に答える