mysql – “.save”仅在数据库中插入空值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – “.save”仅在数据库中插入空值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1538字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试为医院制作RoR应用程序,因此它有患者,医生,办公室等.
我遇到的问题是,在患者“注册”时,我无法将新患者保存在数据库中.实际上,尽管我已经检查过属性是否正常(它只是一个名称和个人ID),但一旦方法被删除,数据库中只会出现一个带有“< null>”的新行.而不是实际的属性值.这是方法:
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')
在其他视图收集以下形式的: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
解决方法:
删除类患者中的以下行:
attr_accessor :name, :pID
发生了什么是attr_accessor replaced两个数据库列属性:name和:pID(它们是自动生成的)有自己的属性,产生两个虚拟属性:name和:pID.
因此,正在设置和验证虚拟属性而不是相应的数据库属性,这导致数据库中没有错误但是空值.
内容总结
以上是互联网集市为您收集整理的mysql – “.save”仅在数据库中插入空值全部内容,希望文章能够帮你解决mysql – “.save”仅在数据库中插入空值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。