我有一个我试图上传到数据库的csv。我能够读取csv并获取哈希值并将值插入数据库。我遇到的问题是其中一个哈希值将活动字段设置为" false"但是当它插入数据库时,它会插入' true'。以下是该代码。
型号代码:
def self.import(csv_file)
CSV.foreach(csv_file, headers: true) do |row|
project_hash = row.to_hash
Project.create! row.to_hash
end
end
控制器代码:
def import_projects
projects = Project.import(params[:file].path)
flash[:notice] = "Projects successfully imported"
redirect_to :action => :index
end
project_hash = {" name" =>" Dog"," project_id" => nil," active" =>"假"}
所以当哈希保存到数据库中时,条目看起来就像这样。
name => ' Dog',project_id ='',active =' true'
请有人告诉我为什么活动列的错误值会被插入为真。
答案 0 :(得分:1)
我的理解,ruby考虑变量内部是否有值是真的,SO中有一篇文章讨论真/假,这里是the one for your understanding.
至于你上面的问题,我建议使用回调来解决你的问题,如下面的示例
<强> your_model.rb 强>
before_validation :convert_boolean
...
def convert_boolean
self.active = false if self.active == "false"
end