2017-12-14 14 views
1

레일스 앱에서 내 Devise 사용자 모델에 표시된 행을 추가 한 후에는 웹 양식이나 Console에서 User.create()를 사용하여 더 이상 새 사용자를 만들 수 없습니다. 이 행을 주석 처리하면 모든 기능이 복원됩니다. 분명히 위의 내용과 매우 밀접하게 관련되어 있으므로 사용자를 대리점에 할당하도록 할 수 있습니다. 이 기능이 필요할 때마다 수정하거나 다른 방법으로 제안하는 방법이 있습니까?belongs_to 관계로 인해 개발자가 데이터베이스에 저장하지 않습니다

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 
+0

아래 주어진 해결책을 시도하고 추가 안내를 위해 알려주십시오. – Gabbar

답변

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

참고 : - 당신은 dealer_id 또한 모델 User에가 있어야 확인이 작업을하려면 @user.dealer if @user.dealer.present?

이유 우리가 정의 할 때마다 레일 (5)에서

  • , belongs_to association 인 경우, ated 레코드는 기본적으로 제공됩니다.
+0

고마워요, 선택 사항처럼 보입니다 : 진정한 해결! – user2280857

+0

당신을 도운다면 대답/upvote 대답을 자유롭게 느끼고, 나는 또한 설명을 추가했습니다. '@ user.dealer'를 사용할 수 있도록 레코드 생성시'dealer_id'를 반드시 전달해야합니다. – Gabbar