使用强参数创建记录时键入错误

时间:2014-10-18 06:38:16

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我有以下控制器操作

def create
  @user= user.new(user_params)
  ...
end

private
def user_params
  params.require(:user).permit(:username, :device)
end

用户模型持有设备表的外键

class user < ActiveRecord::Base
  belongs_to :device
end

设备也具有has_many属性。

当我尝试使用表单详细信息创建新用户时

user[username] = 'test'user[device] = 1

我收到类型错误ActiveRecord::AssociationTypeMismatch Device(#37560060) expected, got String(#15955200)

2 个答案:

答案 0 :(得分:1)

在新用户模板中使用form_for并将新的@user对象传递给它,并定义输入属性,如下所示

<%= form_for @user, create_user_path do |f| %>
    <%= f.text_field :username %>
    <%= f.text_field :device_id %>
    <%= f.submit %>
<% end %>

并将强参数:device更改为:device_id,因为pragma告诉上面

答案 1 :(得分:0)

更改&#39;设备&#39;到&#39; device_id&#39;

def user_params
  params.require(:user).permit(:username, :device_id)
end
...
user[device_id] = 1