私はこのエラーをGoogleでよく見ますが、私のケースは少し異なります。私はdelayed_jobを使用してImは実行時にエラーを取得します。 notified_by
とuser
は、それぞれ別々のユーザーです。検証エラーはnotified_by
にあります。私はnotified_by
の通知コントローラにbelongs_toを作成しました。すべてのすべてでActiveRecord :: RecordInvalid:検証に失敗しました:通知は空白にできません
私delayed_jobモデルcheck_expired.rb
class CheckExpired < Struct.new(:agreement_id)
def perform
agreement = Agreement.find(agreement_id)
if agreement.accepted == false
agreement.update_attributes expired: true
create_notification_expired agreement
end
end
def create_notification_expired(agreement)
puts "method was called"
puts "#{agreement.reviser_user_id}"
Notification.create!(user_id: agreement.user_id,
notified_by_id: agreement.reviser_user_id,
agreement_id: agreement.id,
notified_by: agreement.reviser_user,
description: "Your agreement has expired you have not been charged",
identifier: agreement.id,
notice_type: 'expired')
end
end
マイ通知モデル
class Notification < ActiveRecord::Base
belongs_to :notified_by, class_name: 'User'
belongs_to :user
belongs_to :reservation
belongs_to :offer
belongs_to :agreement
validates :user_id, :notified_by_id, :identifier, :notice_type, presence: true
end
、notified_by
は、検証エラーを示しています。
は ''プット "#{agreement.reviser_user_id}" です何かを示している? –
には何も表示されません。メソッドを呼び出すときに合意が間違っていると思いますか? 'perform'から' create_notification_expired'メソッドに 'agreement'を渡さないようにしました –
' create_notification_expired'メソッドを呼び出す前に契約がnilであるかどうかチェックしましたか? –