2016-05-10 13 views
0

次のクラスを作成しましたが、正しく機能しませんでした。カスタム検証メソッドでの関連付け

class User < ActiveRecord::Base 
    validate :validate_department_code, on: :create 
    def validate_department_code 
    if self.department_code.present? 
     department = Department_code.find_by_name(self.department_code) 
     user.build_participation(department: department) 
    else 
     self.errors.add(:department_code, :not_found) 
    end 
    end 
end 

検証後、ユーザーはDBに保存されますが、参加は保存されません。したがって、user.participationはゼロになります。

どうすれば問題を解決できますか?

答えて

0

User.rbには、条件にafter_createを追加します。それはのようになります

after_create :create_participation, if: :department_code.present?

+0

は、あなたの答えをいただき、ありがとうございます。それは問題を解決しました。 可能であれば、私の郵便番号が正しく機能しなかった理由を知りたい。 誰か知っていますか? – graboros

+0

'validate'は検証の目的でのみ使用してください。 'validates:department_code、presence:true' – Yimanei

+0

こんにちは@graboros、あなたの問題を解決したら私の答えを受け入れることができますか? – Yimanei

関連する問題