gpt4 book ai didi

ruby-on-rails - 创建具有预填充的 has_many 关联的 Rails 模型实例

转载 作者:行者123 更新时间:2023-12-04 06:50:32 26 4
gpt4 key购买 nike

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

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>]

但是,我希望所有 Foo 对象都用 Bar 初始化,而不必显式运行第 2 行:
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>]

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

最佳答案

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

但是,如果您坚持按照您的要求做,这将做到。

class Foo < ActiveRecord::Base
has_many :bars

def after_initialize
self.bars << Bar.new if self.new_record?
end
end

关于ruby-on-rails - 创建具有预填充的 has_many 关联的 Rails 模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3181009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com