【发布时间】:2011-04-14 17:19:55
【问题描述】:
大多数 Rails 教程都展示了如何通过 params 散列填充模型类,如下所示:
class UsersController < ApplicationController
def create
@user = User.create(params[:user])
# more logic for saving user / redirecting / etc.
end
end
如果您的模型中的所有属性都应该是字符串,这将非常有用。但是,如果某些属性应该是整数或日期或其他类型,会发生什么?
例如,假设 User 类看起来像这样
class User < ActiveRecord::Base
attr_accessible :email, :employment_start_date, :gross_monthly_income
end
:email 属性应该是字符串,:employment_start_date 属性应该是日期,:gross_monthly_income 应该是小数。为了使这些属性具有正确的类型,我是否需要将我的控制器操作更改为看起来像这样?
class UsersController < ApplicationController
def create
@user = User.new
@user.email = params[:user][:email]
@user.employment_start_date = params[:user][:employment_start_date].convert_to_date
@user.gross_monthly_income = params[:user][:gross_monthly_income].convert_to_decimal
# more logic for saving user / redirecting / etc.
end
end
【问题讨论】:
-
您确定 params[:user] 将包含所有字符串吗?我认为当您将它与 AR 一起使用时,params 哈希将被正确转换。
-
@rmk 是的,你是对的。我在下面添加了一个答案,基本上说了同样的话。我会将其标记为已接受的答案,但我必须等待 2 天才能将自己的答案标记为已接受的答案。
标签: ruby-on-rails activerecord