Ruby on rails Rails创建活动记录时有许多关联

Ruby on rails Rails创建活动记录时有许多关联,ruby-on-rails,associations,rails-activerecord,has-many,Ruby On Rails,Associations,Rails Activerecord,Has Many,我有一个rails模型,它有很多关联,如下所示 class Physician < UserProfile has_many :state_licenses, inverse_of: :physician, autosave: true, dependent: :destroy validates_presence_of :state_licenses, :message=>"Please select at-least one state license" def crea

我有一个rails模型,它有很多关联,如下所示

class Physician < UserProfile
has_many :state_licenses, inverse_of: :physician, autosave: true, dependent: :destroy
validates_presence_of :state_licenses, :message=>"Please select at-least one state license"

  def create
    physician = nil
    ActiveRecord::Base.transaction do
      physician = Physician.create(params.permit(:first_name, :last_name, :title, :residency_board_status, :residency_specialty_id))
      logger.debug("in physician create")
      params["user"].merge!({ user_profile_type: Physician.name, user_profile_id: physician.id })

state_licenses = params["state_licenses"]

      if (state_licenses != nil)
        state_licenses.each do |state_license|
          physician.state_licenses.create(physician_id: physician.id, state_id: state_license)
        end
      end

      user_record = nil
      super do |user|
        user_record = user
        user.errors.delete(:user_profile)
        physician.errors.messages.each { |field, messages| messages.each {|message| user.errors.add(field, message)} }
      end
      raise ActiveRecord::Rollback unless user_record.persisted? && physician.persisted?
    end

    AdminNotificationsMailer.physician_signed_up(physician).deliver_now rescue nil
  end

即使我在医生身上创建了一堆州许可证,我仍然会得到验证错误以选择至少一个州许可证。我如何确保在医生创建过程中,医生与州许可证的关联是正确的?

您是否也可以发布参数[“州许可证”]中的数据?此外,当您为医生创建州许可证时,您无需再次提供医生id。医师。州许可证。创建(州id:州许可证)谢谢Surya。params[“state_licenses”]中的数据是一个字符串数组,如下所示。。。["1","2","5","7"]. 另外,当我尝试在医生上创建州许可证时,它会给我一个错误,告诉我除非保存父级,否则无法创建。我做错了什么?
medicine.state\u licenses.create(state\u id:state\u license)
这应该可以工作,如果它不工作,那么可能有一些活动记录验证错误。请打印记录器:
state\u license=medicine.state\u licenses.create(state\u id:state\u license)Rails.logger.inspect“state license{state\u license.errors}”
`并发布记录器语句。