Mysql 从另一个表模型更新另一个表的列

Mysql 从另一个表模型更新另一个表的列,mysql,ruby-on-rails,postgresql,ruby-on-rails-4,Mysql,Ruby On Rails,Postgresql,Ruby On Rails 4,我有一个名为Application的表和另一个名为Application\u Case\u Status的表 在我的代码中,我创建了应用程序,并希望更新应用程序\案例\状态表列“应用程序源” 创建应用程序时,其中一列是:case_code=“of-123”或“ON-123” 在我的申请\案例\状态表中,我有一列:贷款\申请\ id和:申请\来源 application.rb中的我的代码 after_create :generate_source_id def generate_source_i

我有一个名为Application的表和另一个名为Application\u Case\u Status的表

在我的代码中,我创建了应用程序,并希望更新应用程序\案例\状态表列“应用程序源”

创建应用程序时,其中一列是:case_code=“of-123”或“ON-123”

在我的申请\案例\状态表中,我有一列
:贷款\申请\ id和:申请\来源

application.rb中的我的代码

after_create :generate_source_id

def generate_source_id 

    application_object = Application.find(self.id)

    if application_object.case_code.include? "OF-" 
      update_attribute(:application_source, "Manual Upload")
    end
    if self.case_code.include? "ON-"
      update_attribute(:application_source, "Website")
    end
  end

我得到一个错误,它找不到列:application\u source如何让它更新此列,即application\u Case\u Status table

根据您的代码,它似乎试图更新表application的列,但application table没有名为“application\u source”的列


首先,您需要更新表应用程序\u案例\u状态:您不需要
Application\u object=Application.find(self.id)
,因为
self
已经是
Application\u对象了

此外,您有两个
if
语句,但看起来它们不可能同时为真,因此您应该将它们转换为一个
if…else

因此,假设:

class Application
  has_one :application_case_status
end

class ApplicationCaseStatus
  belongs_to :application
end
您的方法应如下所示:

def generate_source_id
  # we are going to check "case_code" **once** and feed the "application_source" variable
  application_source = 
    if self.case_code.include? "OF-"
      "Manual Upload"
    else
      "Website"
    end
  # and then we are going to create the "ApplicationCaseStatus" entity
  ApplicationCaseStatus.create!(:application_id = self.id, :application_source, application_source)
end
请注意,根据@Tien Nguyen的评论,我们正在创建
ApplicationCaseStatus
实体,因为我们假设它尚未创建。如果不是这样,您应该只更新它(
self.application\u case\u status.update\u属性!(:application\u source,application\u source)


如果某项工作不完全符合您的要求或没有意义,请告诉我。

您的
ApplicationCaseStatus
表可能有很多实体,您如何知道要更新哪一个?
应用程序
应用程序状态
之间是否存在关系?关系是应用程序id是应用程序状态中的参考。了解更多信息会有所帮助。请发布您的表模式和确切的错误,其中可能包括“ActiveRecord::……我认为,在创建应用程序之后的这一刻,没有ApplicationCaseStatus是正确的。因此,我建议创建而不是更新entity@TienNguyen这是一个很好的假设,我将编辑我的答案以包含您的评论。