Mysql 如何在rails中保存日期选择字段
如何保存日期选择字段 我认为:Mysql 如何在rails中保存日期选择字段,mysql,ruby-on-rails,ruby,ruby-on-rails-4,Mysql,Ruby On Rails,Ruby,Ruby On Rails 4,如何保存日期选择字段 我认为: <%= f.date_select :dob, :start_year => Date.current.year, :end_year => 1920 %> 有道理吗 在我的数据库中,我有一个名为“dob”的字段。问题是如何在数据库中保存此字段 我使用的是Rails 4.0.2和params许可特性。我在控制器中添加了这个 params.require(:user).permit("dob(1i)", "dob(2i)", "dob(3
<%= f.date_select :dob, :start_year => Date.current.year, :end_year => 1920 %>
有道理吗
在我的数据库中,我有一个名为“dob”的字段。问题是如何在数据库中保存此字段
我使用的是Rails 4.0.2和params许可特性。我在控制器中添加了这个
params.require(:user).permit("dob(1i)", "dob(2i)", "dob(3i)")
谷歌搜索了一下,但我没有得出公正的结论 只需从三个参数创建一个日期:
@user.dob = Date.new(params['dob(1i)'].to_i,params['dob(2i)'].to_i,params['dob(3i)'].to_i)
@user.save
仅供参考,Rails将接受一个实际字符串作为数据库中类型为date
的列的日期。因此,如果使用返回字符串的日期选择器,如:
# if params[dob] = '2015-3-26' passed from your form
@user.dob = params[dob]
@user.save
# in server console you'll see...
# SQL (0.6ms) UPDATE "users" SET "dob" = $1, "updated_at" = $2 WHERE "users"."id" = 193 [["dob", Thu, 26 Mar 2015],...
所以你可以这样做:
@user.dob = params.values.join'-'
# =>'2015-3-26'
@user.save
当然,如果在表单和
许可证中添加任何其他参数,则该参数将不再有效。我建议你在表格上找日期选择器。使一切变得简单。参数require(:user).permit(:dob)的问题是什么?
?我发现:在分配多参数属性时出现了1个错误[error on assignment[2015,3,24]to dob(错误数量的参数(3代表0..1)),尽管我知道这条消息与permit无关,但出于安全考虑,我学会了明确地传递它们。下面的答案对你有用吗?在params
中,将整数作为参数。您有一个字符串。该表单不返回整数,从不返回。它总是字符串。这是一个很好的简单hack+1.但是应该是params['dob(1i)].to_i
而不是引发错误undef方法dob
。
# if params[dob] = '2015-3-26' passed from your form
@user.dob = params[dob]
@user.save
# in server console you'll see...
# SQL (0.6ms) UPDATE "users" SET "dob" = $1, "updated_at" = $2 WHERE "users"."id" = 193 [["dob", Thu, 26 Mar 2015],...
@user.dob = params.values.join'-'
# =>'2015-3-26'
@user.save