我有一个名为Application的表和另一个名为Application_Case_Status的表
在我的代码中,我创建了应用程序,我想更新application_case_status表列" application-source"。
创建应用程序后,其中一列是:case_code =" OF-123"或" ON-123"
在我的Application_case_Status表中,我有一个列:loan_application_id and :application_source
我在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_source如何让它更新此列,即Application_Case_Status表
答案 0 :(得分:0)
根据您的代码,它似乎尝试更新表Application的列但Application表没有名为" application_source"的列。
您需要更新表Application_case_Status
答案 1 :(得分:0)
首先:您不需要application_object = Application.find(self.id)
,因为self
已经是application_object
。
此外,您有两个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_case_status.update_attribute!(:application_source, application_source)
)
如果某些内容无法正常运行或没有意义,请告诉我。