ruby-on-rails - 无法获取 Rails :autosave option to work on models

标签 ruby-on-rails database activerecord

这可能是一件非常简单的事情,但我一辈子都做不到。出于某种原因,:autosave 实际上并不是自动保存底层模型。

这是我的架构:

    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 记录。我做错了什么?

最佳答案

当我遇到这种情况时,我发现 betternestedset 插件正在覆盖更新方法,而没有使用 alias_method_chain 或其他任何东西来维护现有的调用链。我替换了 betternestedset 的更新重写并在其位置放置了一个简单的 attr_readonly 调用(类似于该插件中现有的 attr_protected 调用)。也许这会对某个地方的人有所帮助。

关于ruby-on-rails - 无法获取 Rails :autosave option to work on models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075747/

相关文章:

ruby-on-rails - 批量更新属性

ruby-on-rails - 如何配置 Fine Uploader 以发出与 Rails 兼容的请求?

ruby-on-rails - Activerecord 按最佳匹配排序或查询

sql - 使用 LIMIT 进行慢速查询(Active Record `first` 方法)

ruby-on-rails - ActiveRecord 与两个不同模型的关联

ruby-on-rails - Ruby 2 升级破坏了 Nokogiri 和/或 open-uri 编码?

ruby-on-rails - Heroku NoMethoderror, remember_token=

php - 为什么我不写入我的数据库

sql - 文件系统管理工具

android - 如何修复我的 Android SQLite 数据库?