Ruby on Rails:子类在创建子类时提供父类值

时间:2015-02-27 21:00:11

标签: ruby-on-rails ruby parent-child belongs-to

我基本上是在寻找与此相反的东西:

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默认值。但是,这些值是硬编码的,根本不是动态的。什么是最好,最干燥的方式来完成我的任务?

2 个答案:

答案 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)

我几天前发现了这个答案,但忘了把它包起来。

我在想这个错误的整个架构。在与我办公室周围的高级开发人员交谈时,我们得出的结论是,在大多数标准情况下,您需要先创建标题表,然后创建子项。如果你需要更新或破坏某些东西,尤其是以后。我不应该尝试从细节创建标题,而是从标题创建标题。