【发布时间】:2014-01-19 20:09:40
【问题描述】:
在我的 Rails 4 控制器操作中,我传递了以下参数:
{"user"=>{"email"=>"", "password"=>"[FILTERED]", "profile"=>{"birthday"=>nil, "gender"=>nil, "location"=>"", "name"=>""}}}
现在我希望从这些参数中创建两个对象:User 和它的 Profile。
我尝试了以下代码的迭代,但无法通过strong_params 问题:
def create
user = User.new(user_params)
profile = user.build_profile(profile_params)
...
end
private
def user_params
params.require(:user).permit(:email, :password)
end
def profile_params
params[:user].require(:profile).permit(:name, :birthday, :gender, :location)
end
由于上面的代码引发了Unpermitted parameters: profile 错误,我想知道profile_params 方法是否会受到影响。几乎感觉我需要在user_params 中要求profile 并处理它。我也尝试过,将我的 strong_params 方法更改为:
def create
user = User.new(user_params)
profile_params = user_params.delete(:profile)
profile = user.build_profile(profile_params)
...
end
private
def user_params
params.require(:user).permit(:email, :password, profile: [:name, :birthday, :gender, :location])
end
但我得到ActiveRecord::AssociationTypeMismatch - Profile(#70250830079180) expected, got ActionController::Parameters(#70250792292140):
有人能解释一下吗?
【问题讨论】:
标签: ruby-on-rails-4 strong-parameters