0

人々が情報に賛成票を投じたり反対票を投じたりするときなどの単純なアクションを記録するRailsサイトがあります。新しいアクションごとにEventLogが作成されます。

ユーザーの気が変わったらどうしますか? after_create補完的なアクションを探し、最近のペアが見つかった場合は両方を削除するコールバックがあります。明確にするために、人が何かに賛成票を投じてすぐにキャンセルした場合、両方event_logsが削除されることを意味します. 以下は私のコールバックです。

# Find duplicate events by searching nearly all the fields in the EventLog table
@duplicates = EventLog.where("user_id = ? AND event = ? AND project_id = ? AND ..., ).order("created_at DESC")

if @duplicates.size > 1
  @duplicates.limit(2).destroy_all
end

フィールドのいずれかがたまたま nil の場合、クエリは を返すため、上記のコードはまったく機能しません[]

null 値を処理できるようにこのコードを作成するにはどうすればよいですか?また、これを完全に行うためのより良い方法はありますか?

4

2 に答える 2