ActiveRecord::ReadOnlyRecord(ActiveRecord::ReadOnlyRecord):在更新期间

ActiveRecord::ReadOnlyRecord(ActiveRecord::ReadOnlyRecord):在更新期间,activerecord,readonly,Activerecord,Readonly,我想我还是个新手,但我再次需要你的帮助。当我在habtm协会工作时,我遇到了问题。我有一个表格,可以输入有关计算机的信息。habtm是机器和操作系统之间的关联 class Machine < ActiveRecord::Base .... has_and_belongs_to_many :operatingsystems, :join_table => "machines_operatingsystems", :readonly => false ...

我想我还是个新手,但我再次需要你的帮助。当我在habtm协会工作时,我遇到了问题。我有一个表格,可以输入有关计算机的信息。habtm是机器和操作系统之间的关联

class Machine < ActiveRecord::Base   
   ....
   has_and_belongs_to_many :operatingsystems, :join_table => "machines_operatingsystems", :readonly => false
   ....
end

class Operatingsystem < ActiveRecord::Base
   ....
   has_and_belongs_to_many :machines, :join_table => "machines_operatingsystems", :readonly => false
   ....
end
但是,如果我编辑一台机器而不更改名称,并单击“更新”,则会出现以下错误:

ActiveRecord::ReadOnlyRecord (ActiveRecord::ReadOnlyRecord):
app/controllers/machines_controller.rb:72
app/controllers/machines_controller.rb:71:in `update'
passenger (2.2.15) lib/phusion_passenger/rack/request_handler.rb:92:in `process_request'
passenger (2.2.15) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:441:in `start_request_handler'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:381:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/utils.rb:252:in `safe_fork'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:377:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:163:in `start'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:222:in `start'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:253:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:247:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:246:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:145:in `spawn_application'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:278:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'

提前感谢您的帮助。

除了
机器id
操作系统id
之外,您的
机器操作系统
表上还有其他列吗?如果是,则ActiveRecord将关联返回的记录标记为只读


一个可能的罪魁祸首是联接表上的时间戳列。如果创建
机器操作系统
的迁移包括调用
时间戳
,这可能是问题的根源。

您的
机器操作系统
表上除了
机器id
操作系统id
之外是否还有其他列?如果是,则ActiveRecord将关联返回的记录标记为只读


一个可能的罪魁祸首是联接表上的时间戳列。如果创建
机器\u操作系统
的迁移包含对
时间戳的调用
,这可能是问题的根源。

我注意到,在创建时,它会在联接表中创建三重关系。但我不知道为什么。我添加了:uniq=>true,但我不确定这是正确的方法……我注意到,在创建时,它在联接表中创建了三重关系。但我不知道为什么。我补充道:uniq=>正确,但我不确定这是正确的方法。。。
ActiveRecord::ReadOnlyRecord (ActiveRecord::ReadOnlyRecord):
app/controllers/machines_controller.rb:72
app/controllers/machines_controller.rb:71:in `update'
passenger (2.2.15) lib/phusion_passenger/rack/request_handler.rb:92:in `process_request'
passenger (2.2.15) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:441:in `start_request_handler'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:381:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/utils.rb:252:in `safe_fork'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:377:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:163:in `start'
passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:222:in `start'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:253:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:247:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:246:in `spawn_rails_application'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:145:in `spawn_application'
passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:278:in `handle_spawn_application'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'