我基本上是在寻找与此相反的东西:
Ruby on Rails: Building a child with default values when its parent is created
但是我无法在堆栈溢出或文档上找到任何帮助我的东西。
class GeneralError < Details
#ASSOCIATIONS
belongs_to :type
belongs_to :error_log
has_one :exception
after_create :create_error_log
def create_error_log
self.error_log = ErrorLog.new(store_proc: "Columbia::GeneralError.log", type_id: 1, summary: "A general error was logged at: '#{Time.now}")
save
end
end
所以general_errors belongs_to error_log。 ErrorLog也是我数据库中的GeneralErrors头表。
ErrorLog有一个名为摘要的列,我希望传入一个 发生错误的简短描述。
GeneralErrors我有一个名为 description 的列,我希望传递更详细的描述。最后,我希望能够调用GeneralError.new()并传入摘要和描述。
截至目前,使用上面列出的代码,每次创建GeneralError时,我都能够提供ErrorLog默认值。但是,这些值是硬编码的,根本不是动态的。什么是最好,最干燥的方式来完成我的任务?
答案 0 :(得分:0)
试试这个:
after_create :create_error_log
def create_error_log
ErrorLog.create(store_proc: "Columbia::GeneralError.log", type_id: 1, summary: "A general error was logged at: '#{Time.now}")
end
答案 1 :(得分:0)
我几天前发现了这个答案,但忘了把它包起来。
我在想这个错误的整个架构。在与我办公室周围的高级开发人员交谈时,我们得出的结论是,在大多数标准情况下,您需要先创建标题表,然后创建子项。如果你需要更新或破坏某些东西,尤其是以后。我不应该尝试从细节创建标题,而是从标题创建标题。