2016-10-12 18 views
0

userモデルを除くすべてのモデルに、私のApplicationRecordファイルに存在する検証を継承させたい。それを達成する方法はありますか?
私はApplicationRecordにすべてのモジュールの親であることを意味していますので、ことを置くことをお勧めしませんが、あなたが本当にそれをしたい場合、これがラインvalidates :user_id, presence: trueRails 5 ApplicationRecord継承(例外あり)

答えて

1

です:

class ApplicationRecord < ActiveRecord::Base 
    validates :user_id, presence: true, unless: 'self.class.to_s == "User"' 
    ... 
end 

しかし、強く私それに対して示唆している。これにより、コードカウンタが直感的になり、将来の開発者は、なぜそれがそのように機能するのかを理解することができなくなります。将来作成するレコードはもちろん、presence: falseを明示的に設定する必要があります。

+0

私はあなたの提案にいくらか同意しますが、user_idは間違いなくすべてのモデルに含まれます。ただし、user_idはユーザー表の列ではないため、このソリューションは機能しません。したがって、エラーがスローされます。 –

+0

@AkashAggarwalもしあなたがそうしなければならないと思います。コードを更新してテストしました。 – amingilani

+0

目を覚ますときにテストします。ベッドにぶつかる時間。早速のお返事ありがとうございます :) –

関連する問題