大多數Rails的教程演示如何通過params哈希填充模型類,像這樣:創建從PARAMS哈希Rails的ActiveRecord的模式
class UsersController < ApplicationController
def create
@user = User.create(params[:user])
# more logic for saving user/redirecting/etc.
end
end
如果模型中的所有屬性都應該是字符串這個偉大的工程。但是,如果某些屬性應該是整數或日期或其他類型,會發生什麼?
舉例來說,假設用戶類看起來像這樣
class User < ActiveRecord::Base
attr_accessible :email, :employment_start_date, :gross_monthly_income
end
的:電子郵件屬性應該是一個字符串,則: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]會擁有所有的字符串嗎?我認爲params散列將在AR中使用時正確轉換。 – rmk 2011-04-14 18:07:53
@rmk是的,你說得對。我在下面添加了一個答案,基本上講同樣的事情。我會將其標記爲已接受的答案,但我必須等待2天才能將自己的答案標記爲已接受的答案。 – 2011-04-14 18:11:08