0

我试图在创建子模型时自动创建子模型,如this post中所述。假设我有两个模型Personhas_one :folder并且我想在创建人员时创建一个文件夹为此,我进入Person模型和(从上例中)执行以下操作。自动构建has_one子模型时设置属性

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”?

感谢您的任何建议。

回答

1

您能够从子模型访问父属性:

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的文档。

+0

感谢您的回应。如果这是在人模型中不是'build_folder(folder_name:self.person_name)'?还是我误会了? – neanderslob

+1

是的,我的坏,你可以使用'self.person_name'和'person_name'。 –

+0

很酷,谢谢! – neanderslob