前提・実現したいこと
whereで複数のデータを引っ張って来た後に
特定カラムを変更し保存したい
発生している問題・エラーメッセージ
whereで複数のデータを引っ張って来た後にfind_or_initilize_byで特定したあとに
特定カラムを変更し保存する処理で詰まっています。
該当のソースコード
ruby
1def update 2 line = human.line.where(id: messages_ids) 3 kidoku = line.kidoku_messages.find_or_initialize_by(line_id: message_ids, user_id: user) 4 kidoku.read_time = Time.now 5 kidoku.save! 6end
message_idsには配列で複数の値がはいることを想定しています
lineとkidoku_messageの関係は1対多になります
試したこと
line = human.line.find_by!(id: messages_id)で1つに限定したときには
成功しています。
def update line = human.line.find_by!(id: messages_id) kid = line.kidoku_messages.find_or_initialize_by(line_id: message_id, user_id: user) kid.read_time = Time.now kid.save! end
以下のようにeachを使った場合はread_timeがないと言われてしまい処理が最後まで走りません。
def update line = human.line.where(id: messages_ids) line.each do |kidoku| kid = kidoku.kidoku_messages.find_or_initialize_by(line_id: message_ids, user_id: user) kid.read_time = Time.now kid.save! end end
回答1件
あなたの回答
tips
プレビュー