自动构建 has_one 个子模型时设置属性

Set attributes when automatically building has_one child model

我正在尝试在创建父模型时自动构建子模型,如 this post 中所述。假设我有两个模型 Person has_one :folder 并且我想在该人创建时创建一个文件夹 为此,我进入 Person 模型并(从上面的示例中)执行以下操作.

has_one :folder
before_create :build_default_folder

private
def build_default_folder
  build_folder
  true
end

这是有道理的,但是说 Profile 有一些属性,我想根据 Person 的属性为 Folder 设置一个属性。就像这个人 :person_name 我应该怎么做才能将 :folder_name 设置为“[person_name]'s_Folder”?

感谢您的任何建议。

您可以从子模型访问父属性:

class Profile < AR::Base
    has_one :folder
    before_create :build_default_folder

    private
    def build_default_folder
      build_folder(folder_name: person_name)
      true
    end
end

阅读 Active Record Associations 的文档。