- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要开门见山了,根据我的日志文件,当我提交表单创建新记录时,所有参数都发送正确,但某些属性设置失败在数据库中创建记录。以下是相关日志条目:
Started POST "/computers" for 192.168.8.70 at 2011-05-19 16:24:31 -0400
Processing by ComputersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"agR6MrYbMTbXeR9+Oit0rUzrhcKuhg6p/jpGqQD9MhI=", "show_location_buttons"=>"1", "computer"=>{"vendor_id"=>"1", "new_vendor_name"=>"", "model"=>"Hello", "hostname"=>"Hello", "user_id"=>"", "computer_type"=>"Desktop", "serial_number"=>"", "unh_id"=>"", "doc_id"=>"", "federal"=>"0", "department_id"=>"", "new_department_name"=>"", "security_id"=>"", "purchase_price"=>"", "purchase_date"=>"05/11/2011", "warranty_expiration"=>"05/28/2011", "activity_id"=>"", "new_activity_code"=>"", "condition_id"=>"", "new_condition_name"=>"", "location_id"=>"", "operating_system"=>"Fedora Core", "comments"=>""}, "commit"=>"Create Computer"}
User Load (0.1ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 48 LIMIT 1
SQL (0.1ms) BEGIN
SQL (0.4ms) SHOW TABLES
Computer Load (0.2ms) SELECT `computers`.`id` FROM `computers` WHERE (`computers`.`hostname` = BINARY 'Hello') LIMIT 1
Vendor Load (0.1ms) SELECT `vendors`.* FROM `vendors` WHERE `vendors`.`id` = 1 LIMIT 1
SQL (0.7ms) describe `computers`
AREL (0.3ms) INSERT INTO `computers` (`vendor_id`, `model`, `hostname`, `computer_type`, `serial_number`, `unh_id`, `doc_id`, `federal`, `department_id`, `security_id`, `purchase_price`, `purchase_date`, `warranty_expiration`, `activity_id`, `condition_id`, `location_id`, `operating_system`, `license_sticker_id`, `comments`, `created_at`, `updated_at`, `user_id`, `delta`) VALUES (1, 'Hello', 'Hello', 'Desktop', '', '', '', 0, NULL, NULL, NULL, '2011-11-05', NULL, NULL, NULL, NULL, 'Fedora Core', NULL, '', '2011-05-19 20:24:31', '2011-05-19 20:24:31', NULL, 1)
如果仔细观察,会发现“warranty_expiration”参数是在参数哈希中设置的,但如果查看日志中的 AREL 行,则会发现数据库中的插入操作会删除 Warranty_expiration 字段的值并插入 NULL。我对此完全傻眼了。有什么想法吗?
以下是我的计算机资源的模型和 Controller 代码:
计算机.rb
class Computer < ActiveRecord::Base
before_validation :format_fields
validates :model, :presence => true
validates :hostname, :presence => true, :uniqueness => true, :format => { :with => /^[a-zA-Z0-9]{3,25}$/ }
validates :computer_type, :presence => true
validates :operating_system, :presence => true
validate :required_fields_specified
belongs_to :vendor
belongs_to :department
belongs_to :security
belongs_to :activity
belongs_to :condition
belongs_to :location
belongs_to :license_sticker
belongs_to :user
has_many :hardware_addresses, :as => :addressable
accepts_nested_attributes_for :hardware_addresses, :allow_destroy => true, :reject_if => lambda { |attr| attr[:mac_address].blank? }
has_many :license_stickers, :dependent => :destroy
accepts_nested_attributes_for :license_stickers, :allow_destroy => true, :reject_if => lambda { |attr| attr[:key].blank? or attr[:operating_system].blank? }
has_many :pictures, :as => :imageable, :dependent => :destroy
accepts_nested_attributes_for :pictures, :allow_destroy => true
attr_accessor :new_vendor_name
attr_accessor :new_activity_code
attr_accessor :new_department_name
attr_accessor :new_condition_name
before_save :create_vendor_from_name
before_save :create_activity_from_code
before_save :create_department_from_name
before_save :create_condition_from_name
OPERATING_SYSTEMS = ["Microsoft Windows XP x86", "Microsoft Windows 7 x86", "Microsoft Windows Server 2003",
"Microsoft Windows XP x64", "Microsoft Windows 7 x64", "Microsoft Windows Server 2008 x86",
"Microsoft Windows Vista x86", "Microsoft Windows Vista x64", "Microsoft Windows Server 2008 x64",
"Ubuntu 8.x", "Ubuntu 9.x", "Ubuntu 10.x", "Fedora Core", "CentOS 5.x x86", "CentOS 4 x86", "IRIX",
"MacOS 10.5", "MacOS 10.6", "MacOS 10.7","CentOS 4 x64", "CentOS 5 x64", "ESX 3", "ESX 4", "SUSE"]
COMPUTER_TYPES = ["Desktop","Laptop","Server"]
def required_fields_specified
errors.add_to_base "Specify an existing vendor, or create one." if vendor.blank? and new_vendor_name.blank?
end
def create_vendor_from_name
create_vendor(:name => new_vendor_name) unless new_vendor_name.blank?
end
def create_activity_from_code
create_activity(:code => new_activity_code) unless new_activity_code.blank?
end
def create_department_from_name
create_department(:name => new_department_name) unless new_department_name.blank?
end
def create_condition_from_name
create_condition(:name => new_condition_name) unless new_condition_name.blank?
end
def format_fields
serial_number.upcase!
hostname.capitalize!
self.model = self.model.titleize
unh_id.upcase!
doc_id.upcase!
end
define_index do
indexes vendor(:name), :as => :vendor_name, :sortable => true
indexes model, :sortable => true
indexes hostname, :sortable => true
indexes computer_type, :sortable => true
indexes serial_number, :as => :serial, :sortable => true
indexes operating_system, :as => :os, :sortable => true
indexes activity(:code), :as => :activity_code
indexes condition(:name), :as => :condition_name
indexes department(:name), :as => :department_name
indexes license_sticker(:key), :as => :license_key
indexes license_sticker(:operating_system), :as => :licensed_os
has warranty_expiration, :as => :warranty
set_property :delta => true
end
end
computers_controller.rb
class ComputersController < ApplicationController
filter_access_to :all
# GET /computers
# GET /computers.xml
def index
@computers = Computer.search params[:search], :order => sort_column("computer_type"), :sort_mode => sort_direction,
:per_page => 20, :page => params[:page], :star => true
respond_to do |format|
format.html # index.html.erb
format.js
format.xml { render :xml => @computers }
end
end
# GET /computers/1
# GET /computers/1.xml
def show
@computer = Computer.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @computer }
end
end
# GET /computers/new
# GET /computers/new.xml
def new
@computer = Computer.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @computer }
end
end
# GET /computers/1/edit
def edit
@computer = Computer.find(params[:id])
end
# POST /computers
# POST /computers.xml
def create
@computer = Computer.new(params[:computer])
respond_to do |format|
if @computer.save
format.html { redirect_to(@computer, :notice => 'Computer was successfully created.') }
format.xml { render :xml => @computer, :status => :created, :location => @computer }
else
format.html { render :action => "new" }
format.xml { render :xml => @computer.errors, :status => :unprocessable_entity }
end
end
end
# PUT /computers/1
# PUT /computers/1.xml
def update
@computer = Computer.find(params[:id])
respond_to do |format|
if @computer.update_attributes(params[:computer])
format.html { redirect_to(@computer, :notice => 'Computer was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @computer.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /computers/1
# DELETE /computers/1.xml
def destroy
@computer = Computer.find(params[:id])
@computer.destroy
respond_to do |format|
format.html { redirect_to(computers_url) }
format.xml { head :ok }
end
end
private
# def sort_column
# params[:sort] || "computer_type"
# end
# def sort_direction
# if params[:direction].nil?
# :asc
# else
# params[:direction].to_sym
# end
# end
end
更新:在下面的 Rails 控制台中执行请求的行的结果。
ruby-1.9.2-p180 :002 > Computer.create! "vendor_id"=>"1", "new_vendor_name"=>"", "model"=>"Hello", "hostname"=>"Heo", "user_id"=>"", "computer_type"=>"Desktop", "serial_number"=>"", "unh_id"=>"", "doc_id"=>"", "federal"=>"0", "department_id"=>"", "new_department_name"=>"", "security_id"=>"", "purchase_price"=>"", "purchase_date"=>"05/11/2011", "warranty_expiration"=>"05/28/2011", "activity_id"=>"", "new_activity_code"=>"", "condition_id"=>"", "new_condition_name"=>"", "location_id"=>"", "operating_system"=>"Fedora Core", "comments"=>"" Sphinx 0.9.9-release (r2117) Copyright (c) 2001-2009, Andrew Aksyonoff
using config file '/opt/intranet3-dev/config/development.sphinx.conf'... indexing index 'computer_delta'... collected 2 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 2 docs, 62 bytes total 0.016 sec, 3724 bytes/sec, 120.15 docs/sec total 20 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg total 10 writes, 0.000 sec, 0.4 kb/call avg, 0.0 msec/call avg rotating indices: succesfully sent SIGHUP to searchd (pid=25435). =>
computer_type: "Desktop", serial_number: "", unh_id: "", doc_id: "", federal: false, department_id: nil, security_id: nil, purchase_price: nil, purchase_date: "2011-11-05", warranty_expiration: nil, activity_id: nil, condition_id: nil, location_id: nil, operating_system: "Fedora Core", license_sticker_id: nil, comments: "", created_at: "2011-05-19 21:17:55", updated_at: "2011-05-19 21:17:55", user_id: nil, delta: true>
感谢您的帮助,
莱斯
最佳答案
在rails控制台中执行此代码
Computer.create! "vendor_id"=>"1", "new_vendor_name"=>"", "model"=>"Hello", "hostname"=>"Hello", "user_id"=>"", "computer_type"=>"Desktop", "serial_number"=>"", "unh_id"=>"", "doc_id"=>"", "federal"=>"0", "department_id"=>"", "new_department_name"=>"", "security_id"=>"", "purchase_price"=>"", "purchase_date"=>"05/11/2011", "warranty_expiration"=>"05/28/2011", "activity_id"=>"", "new_activity_code"=>"", "condition_id"=>"", "new_condition_name"=>"", "location_id"=>"", "operating_system"=>"Fedora Core", "comments"=>""
并检查抛出了什么类型的异常。
关于mysql - Rails Controller 接收所有参数,但无法正确创建数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6064721/
前言: 有时候,一个数据库有多个帐号,包括数据库管理员,开发人员,运维支撑人员等,可能有很多帐号都有比较大的权限,例如DDL操作权限(创建,修改,删除存储过程,创建,修改,删除表等),账户多了,管理
所以我用 Create React App 创建并设置了一个大型 React 应用程序。最近我们开始使用 Storybook 来处理和创建组件。它很棒。但是,当我们尝试运行或构建应用程序时,我们不断遇
遵循我正在创建的控件的代码片段。这个控件用在不同的地方,变量也不同。 我正在尝试编写指令来清理代码,但在 {{}} 附近插入值时出现解析错误。 刚接触 Angular ,无法确定我错过了什么。请帮忙。
我正在尝试创建一个 image/jpeg jax-rs 提供程序类,它为我的基于 post rest 的 Web 服务创建一个图像。我无法制定请求来测试以下内容,最简单的测试方法是什么? @POST
我一直在 Windows 10 的模拟器中练习 c。后来我改用dev C++ IDE。当我在 C 中使用 FILE 时。创建的文件的名称为 test.txt ,而我给出了其他名称。请帮助解决它。 下面
当我们创建自定义 View 时,我们将 View 文件的所有者设置为自定义类,并使用 initWithFrame 或 initWithCode 对其进行实例化。 当我们创建 customUITable
我正在尝试为函数 * Producer 创建一个线程,但用于创建线程的行显示错误。我为这句话加了星标,但我无法弄清楚它出了什么问题...... #include #include #include
今天在做项目时,遇到了需要创建JavaScript对象的情况。所以Bing了一篇老外写的关于3种创建JavaScript对象的文章,看后跟着打了一遍代码。感觉方法挺好的,在这里与大家分享一下。 &
我正在阅读将查询字符串传递给 Amazon 的 S3 以进行身份验证的文档,但似乎无法理解 StringToSign 的创建和使用方式。我正在寻找一个具体示例来说明 (1) 如何构造 String
前言:我对 C# 中任务的底层实现不太了解,只了解它们的用法。为我在下面屠宰的任何东西道歉: 对于“我怎样才能开始一项任务但不等待它?”这个问题,我找不到一个好的答案。在 C# 中。更具体地说,即使任
我有一个由一些复杂的表达式生成的 ILookup。假设这是按姓氏查找人。 (在我们简单的世界模型中,姓氏在家庭中是唯一的) ILookup families; 现在我有两个对如何构建感兴趣的查询。 首
我试图创建一个 MSI,其中包含 和 exe。在 WIX 中使用了捆绑选项。这样做时出错。有人可以帮我解决这个问题。下面是代码: 错误 error LGH
在 Yii 中,Create 和 Update 通常使用相同的形式。因此,如果我在创建期间有电子邮件、密码、...other_fields...等字段,但我不想在更新期间专门显示电子邮件和密码字段,但
上周我一直在努力创建一个给定一行和一列的 QModelIndex。 或者,我会满足于在已经存在的 QModelIndex 中更改 row() 的值。 任何帮助,将不胜感激。 编辑: QModelInd
出于某种原因,这不起作用: const char * str_reset_command = "\r\nReset"; const char * str_config_command = "\r\nC
现在,我有以下由 original.df %.% group_by(Category) %.% tally() %.% arrange(desc(n)) 创建的 data.frame。 DF 5),
在今天之前,我使用/etc/vim/vimrc来配置我的vim设置。今天,我想到了创建.vimrc文件。所以,我用 touch .vimrc cat /etc/vim/vimrc > .vimrc 所
我可以创建一个 MKAnnotation,还是只读的?我有坐标,但我发现使用 setCooperative 手动创建 MKAnnotation 并不容易。 想法? 最佳答案 MKAnnotation
在以下代码中,第一个日志语句按预期显示小数,但第二个日志语句记录 NULL。我做错了什么? NSDictionary *entry = [[NSDictionary alloc] initWithOb
我正在使用与此类似的代码动态添加到数组; $arrayF[$f+1][$y][$x+1] = $value+1; 但是我在错误报告中收到了这个: undefined offset :1 问题:尝试创
我是一名优秀的程序员,十分优秀!