【发布时间】:2016-04-05 09:25:37
【问题描述】:
我正在使用rails_api gem 创建一个rails api,我有一个模型名称User 和另一个模型名称Identity。
我面临的问题是,每当我尝试使用nested_attributes 从参数创建用户时,它都会给我ActiveRecord::AssociationTypeMismatch error
模型
用户.rb
class User < ActiveRecord::Base
enum gender: [:male , :female]
has_many :identities ,dependent: :destroy
accepts_nested_attributes_for :identities
has_secure_password
end
身份.rb
class Identity < ActiveRecord::Base
belongs_to :user
validates_associated :user
end
控制器
users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new user_params
#@user.build.identities(user_params[:identities])
if @user.save
render json: @user , status: :created
else
render json: @user.errors, status: :unprocessable_entity
end
end
private
def user_params
json_params = ActionController::Parameters.new( JSON.parse(request.body.read) )
json_params.require(:user).permit(:first_name, :last_name, :email, :password, :image, :location, :gender,{identities: [:provider, :uid, :url, :token, :expires_at]})
end
结束
我将数据作为 json 对象发送:
请帮我解决这个问题。我已经尝试了所有可能的解决方案。提前致谢
【问题讨论】:
-
我认为这是因为您只是将一个数组发送到 identities 属性!您必须为身份属性提供身份记录!
-
你不认为
json_params.require(:user).permit(:first_name, :last_name, :email, :password, :image, :location, :gender,{identities: [:provider, :uid, :url, :token, :expires_at]})应该是json_params.require(:user).permit(:first_name, :last_name, :email, :password, :image, :location, :gender,identities_attributes: [:provider, :uid, :url, :token, :expires_at])吗?
标签: ruby-on-rails ruby json rails-activerecord nested-attributes