mayoría de los carriles tutoriales muestran cómo rellenar una clase del modelo a través del hash params así:Creación de modelo de rieles ActiveRecord a partir de hash params
class UsersController < ApplicationController
def create
@user = User.create(params[:user])
# more logic for saving user/redirecting/etc.
end
end
Esto funciona muy bien si se supone que todos los atributos en su modelo a ser cadenas. Sin embargo, ¿qué ocurre si se supone que algunos de los atributos son entradas o fechas o algún otro tipo?
Por ejemplo, digamos que la clase de usuario se parece a esto
class User < ActiveRecord::Base
attr_accessible :email, :employment_start_date, :gross_monthly_income
end
el atributo: correo electrónico debe ser una cadena, el atributo: employment_start_date debe ser una fecha, y el: gross_monthly_income debe ser un decimal. Para que estos atributos sean del tipo correcto, ¿necesito cambiar la acción de mi controlador para que se vea algo así?
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
¿Estás seguro de que params [: user] tendrá todas las cadenas? Creo que hash de params se convertirá correctamente cuando lo uses con AR. – rmk
@rmk Sí, tienes razón. Agregué una respuesta a continuación básicamente diciendo lo mismo. Lo marcaría como la respuesta aceptada, pero tengo que esperar 2 días antes de poder marcar mi propia respuesta como aceptada. –