将对象自动保存到另一个对象

时间:2010-03-28 18:52:46

标签: ruby-on-rails ruby activerecord

您好我有这些课程:

class Core < ActiveRecord::Base   

  belongs_to :resource, :polymorphic => true
  belongs_to :image, :class_name => 'Multimedia', :foreign_key => 'image_id'   
end


class Place < ActiveRecord::Base
  has_one :core, :as => :resource       
end

如果我尝试启动此功能:

a = Place.find(5)
 a.name ="a"
 a.core.image_id = 24
 a.save

名称已保存。 image_id没有 我想在a.save命令中自动保存与地点类关系的记录中的所有更改。有可能吗?

感谢

2 个答案:

答案 0 :(得分:3)

使用:autosave => true

请参阅ActiveRecord::AutosaveAssociation标题为一对多示例的部分。

你会想要这样的东西:

class Place
  has_one :core, :as => :resource, :autosave => true
end

声明:

应在“父”对象上使用:autosave => true。它适用于has_onehas_many,但我在belongs_to尝试使用它时遇到了很大困难。关系。

答案 1 :(得分:0)

我认为你可以使用build_association方法来做到这一点。例如,

a = Place.find(5)
a.name = "a"
a.build_core(:image_id => 24)
a.save

但它可能只有在事先创建了地方对象时才有效。