gpt4 book ai didi

mysql - ".save"只在数据库中插入空值

转载 作者:行者123 更新时间:2023-11-29 02:28:39 25 4
gpt4 key购买 nike

我正在尝试为医院制作 RoR 应用程序,以便它有患者、医生、办公室等。

我遇到的问题是,在患者“注册”时,我无法将新患者保存在数据库中。事实上,尽管我已经检查了属性是否正常(它只是一个名称和一个个人 ID),但一旦该方法被执行,在数据库中只会出现一个带有“ ”的新行而不是实际的属性值.方法如下:

def pat_create

pName = params[:name].to_s
id = params[:pid].to_s.to_i

pat = Patient.where(:pID => id).first
if pat == nil
pat = Patient.new(:name => pName, :pID =>id)
pat.save
end

end

此外,这是它构造的查询:

INSERT INTO `patients` (`created_at`, `name`, `pID`, `updated_at`) VALUES ('2013-05-20 02:04:28', NULL, NULL, '2013-05-20 02:04:28')

此方法在其他 View 以这种形式收集 :name 和 :pid 信息后调用:

<%= form_tag('/page/pat_create') do %> 
<%= text_field_tag :name, nil%>
<%= text_field_tag :pid, nil%>
<%= button_tag(type: "submit", class: "btn btn-success") do %>
Register<i class="icon-white icon-plus"></i>
<%end%>
<%end%>

不用说,pat.errors.empty? 是正确的,pat.save 也是如此。

知道为什么会这样吗?

这是患者模型:

class Patient < ActiveRecord::Base

attr_accessible :name, :pID
attr_accessor :name, :pID

has_many :appointments
validates_presence_of :name
validates :name, :format => {:with=> /^[a-zA-Z\s\D]+$/}
validates_presence_of :pID
validates_numericality_of :pID
validates_inclusion_of :pID, :in => 100000..9999999999

end

最佳答案

删除 class Patient 中的以下行:

attr_accessor :name, :pID

发生的事情是attr_accessor replaced两个数据库列属性 :name:pID(自动生成)有自己的属性,导致两个虚拟属性,:name:pID.

因此,设置和验证虚拟属性而不是相应的数据库属性,这导致数据库中没有错误但空值。

关于mysql - ".save"只在数据库中插入空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com