Это может быть что-то совершенно простое, но я не могу на всю жизнь заставить это работать.По некоторым причинам: автосохранение на самом деле не является автосохранением базовых моделей.
Вот моя схема:
create_table :albums do |t|
t.string :title
t.text :review
t.timestamps
end
create_table :songs do |t|
t.integer :album_id
t.string :name
t.integer :length
end
create_table :cover_arts do |t|
t.integer :album_id
t.integer :artist
end
Вот мои модели:
class Album < ActiveRecord::Base
has_many :songs, :autosave => true
has_one :cover_art, :autosave => true
end
class CoverArt < ActiveRecord::Base
belongs_to :album
end
class Song < ActiveRecord::Base
belongs_to :album
end
Когда явыполните следующие действия в IRB для альбома с обложкой, которая уже находится в базе данных:
a = Album.find(1)
a.title = "New title"
a.cover_art.artist = "New Artist"
a.save
Обновляет запись альбома, но не запись CoverArt.Что я делаю не так?