我在用户模型中有两列code1和code2。我试图将列的值合并为代码。我为此编写了一个迁移文件,我删除了code1和code2。要使用旧的应用程序,我需要接受code1和code2并将其组合以获取代码。所以我允许使用code1和code2。但是,当我使用旧应用程序时,我收到此错误
if user_params[:code1].present?
user_params[:code] = user_params[:code1] + user_params[:code2]
user_params.delete(:code1)
user_params.delete(:code2)
end
在我的控制器中,我编写了以下代码
create table Input_Table(id int, [year] varchar(100),initial int,final int)
insert into Input_table values(1,'2017',1,11)
insert into Input_table values(2,'2017',8,11)
insert into Input_table values(3,'2017',3,33)
insert into Input_table values(4,'2016',6,44)
insert into Input_table values(5,'2016',6,44)
insert into Input_table values(6,'2017',6,44)
insert into Input_table values(7,'2016',4,8)
insert into Input_table values(8,'2017',2,8)
但它没有按预期工作。我如何在旧应用程序中支持code1。
答案 0 :(得分:1)
我不确定但是尝试在attr_accessor :code1, :code2
模型中添加User
一旦在attr_accessor
中定义User model
并在Controller上允许它,就可以在User模型中编写回调并编写self.code = self.code1 + self.code2
class User < ApplicationRecord
attr_accessor :code1, :code2
before_validation :demo_callback
def demo_callback
self.code = self.code1 + self.code2
end
end