首页 > 解决方案 > 多对多在 Rails 中出现“无效”错误

问题描述

我正在尝试建立多对多的关系,但是:roles=>[{:error=>:invalid}]在尝试保存时却得到了。

楷模

class User < ApplicationRecord
  has_many :user_roles, dependent: :destroy
  has_many :roles, through: :user_roles
end

class Role < ApplicationRecord
  has_many :children, :class_name => "Admin::Role", foreign_key: "parent_id"
  belongs_to :parent, :class_name => "Admin::Role"
  has_many :user_roles, dependent: :destroy
  has_many :users, through: :user_roles
end

class Admin::UserRole < ApplicationRecord
  belongs_to :user
  belongs_to :role
end

控制器

def new
  @user = User.new
end

def create
  @user = User.new(user_params)
  respond_to do |format|
    if @user.save
      redirect_to users_url
    end
  end
end

def user_params
  params.require(:user).permit(:role_ids => [])
end

_form.html.erb

form_with(model: user) do |form|
    form.collection_select(:role_ids, Roles.all, :id, :title, multiple: "multiple")
end

参数日志

"user"=>{"role_ids"=>["", "1"]}

标签: ruby-on-railsrubyruby-on-rails-5

解决方案


推荐阅读