2017-12-14 18 views
1

RailsアプリケーションでDeviseユーザーモデルにマークされた行を追加した後、WebフォームまたはUser.create()を使用して新しいユーザーを作成できなくなりました。この行をコメントアウトすると、完全な機能が復元されます。明らかに、これは上記の行と非常に密接に関連しているので、ユーザーをディーラーに割り当てることができるようになっています。私がこの機能を必要としているように、どのように修正するか、あるいはそれをどうやって行うのですか?belongs_to関係のため、Devitsはデータベースに保存されません

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 

注: - あなたはそれが我々が定義するたびRailsの5では、@user.dealer if @user.dealer.present?

理由

  • を作業することもdealer_idUserでモデルを持っている必要があります作りますbelongs_to associationの場合は、 atedレコードはデフォルトで存在します。
+0

おかげで、オプションのように見えました。 – user2280857

+0

あなたが助けてくれれば/ upvoteの回答を受け入れること自由に感じます、私はまた説明を追加しました。また、レコード作成時に 'dealer_id'を渡す必要があることを確認して、' @ user.dealer'を使用できるようにしてください – Gabbar

関連する問題