由于belongs_to关系,Devise不会保存到数据库

时间:2017-12-14 06:12:07

标签: ruby-on-rails devise ruby-on-rails-5.1

在Rails应用程序中将标记的行添加到我的Devise用户模型后,我无法再在Web表单中创建新用户或在控制台上使用User.create()。注释掉这一行可以恢复全部功能。显然它与上面的行非常密切相关,因此我可以将用户分配给经销商。有什么建议如何解决或做不同的事情,因为我需要这个功能?

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :registerable

  has_many :tanks, dependent: :destroy
  has_many :properties, dependent: :destroy
  has_many :contacts, dependent: :destroy
  has_many :stations
  has_many :clients, :class_name => 'User', :foreign_key => :manager_id
  belongs_to :dealer, :class_name => 'User' #<--- this one
end

1 个答案:

答案 0 :(得分:0)

belongs_to :dealer, :class_name => "User",foreign_key: "dealer_id", optional: true

注意: - 请确保dealer_id模型中的User也应该{。}}

  

原因

  • 在Rails 5中,每当我们定义@user.dealer if @user.dealer.present?时,都需要默认显示相关记录。