代码之家  ›  专栏  ›  技术社区  ›  Gareth

已预填充多个关联的Rails模型的创建实例

  •  2
  • Gareth  · 技术社区  · 14 年前

    这最好用例子来解释。以下操作很简单:

    class Foo < ActiveRecord::Base
      has_many :bars
    end
    
    1a>> foo = Foo.new
    => #<Foo id: nil>
    2a>> foo.bars << Bar.new
    => [#<Bar id: nil, foo_id: nil>]
    3a>> foo.bars
    => [#<Bar id: nil, foo_id: nil>]
    

    class Foo < ActiveRecord::Base
      has_many :bars
    
      # [...] Some code here
    end
    
    1b>> foo = Foo.new
    => #<Foo id: nil>
    2b>> foo.bars
    => [#<Bar id: nil, foo_id: nil>]
    

    这可能吗?理想情况下,“default”对象仍将以与显式运行第2a行相同的方式进行关联,以便在保存父Foo对象时保存它。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Hardryv    14 年前

    让我先说一下,从设计的角度来看,这可能不是最好的主意。假设您的代码比Foo和Bar复杂得多,您可能会朝着更符合 builder.

    但是,如果你坚持按你的要求做,这就可以了。

    class Foo < ActiveRecord::Base
      has_many :bars
    
      def after_initialize 
        self.bars << Bar.new if self.new_record?
      end 
    end
    
        2
  •  1
  •   Andrea Pavoni    14 年前

    这样做的方法,因为你把一个模型逻辑混合在另一个模型逻辑中。

    还有:在初始化过程中还没有任何实例,所以我认为这是不可能的。

    你需要完成什么任务?