Mysql 从另一个表模型更新另一个表的列
我有一个名为Application的表和另一个名为Application\u Case\u Status的表 在我的代码中,我创建了应用程序,并希望更新应用程序\案例\状态表列“应用程序源” 创建应用程序时,其中一列是:case_code=“of-123”或“ON-123” 在我的申请\案例\状态表中,我有一列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
:贷款\申请\ 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这是一个很好的假设,我将编辑我的答案以包含您的评论。