前提
掲載日を超えると、自動で削除されるようにしていたが、DM機能を付けた後に
削除されず、エラーが発生した。
Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails
と表示され調べると外部制約キーについての修正について書いており、plan.rbの
has_many :roomsに dependent: :destroyを付け足したところ下記のエラーが発生しました。
発生している問題・エラーメッセージ
ActiveRecord::StatementInvalid at /plans/18 Mysql2::Error: Unknown column 'users.room_id' in 'where clause'
該当のソースコード
class Plan < ApplicationRecord has_many :rooms, dependent: :destroy belongs_to :user mount_uploader :photo, PhotoUploader validates :title, presence: true, length: { maximum: 50 } validates :photo, presence: true validates :detail, presence: true validates :conditions, presence: true validates :start_on, presence: true validates :end_on, presence: true end
・掲載後に削除する機能
plans_contorllers.rb/plan_destroy
1def plan_destroy 2 Plan.where('end_on < ?', Date.today).destroy_all 3 end
調べて、修正してもわからないので、アドバイスを頂けたら幸いです。
「自動削除」はどのように実行されてるのでしょう。
どう見ても何かしらのリクエストによって実行されてるようにしか見えないのですが。
ただ、本当に勝手に削除してしまっていいんですか?
データの整合性とれなくなってるのでは?
設計思想等をきちんと伝えない限り、根本的な解決にはなりません。
設計から見直す必要があるかもしれませんし、それこそ小手先の実装レベルの話には思えません。
すみません。
色々と再興した結果、掲載期間が過ぎたら、「掲載期間が終了した」と表示され、応募およびメッセージボタンが表示されないようにするということに変更しました。
質問後に変えてしまい、大変申し訳ありません。
仕様コロコロ変えすぎて実装が追い付いてないだけではないでしょうか(ずっと前からそんな感じ)
ずっと前からそう感じていたのならば、誠に申し訳ないです。
仕様や設計書は書いてはいるのですが、開発していく中で違うなと思う部分が出てきたので、
まだまだ甘いなと自分自身、痛感しました。。。
「小手先だけでなんとかするのではなく」のようなコメントは初めてではないと思うのですが、
伝わっていなかったようで残念です。
直前の質問でwinterboumさんに指摘されたことも全く活きてないと思います。
https://teratail.com/questions/o6716zt06tt5ce
本当にすみません。
勉強がまだまだ足りず、私自身の理解力の低さが原因だと思っています。
謝る必要はなく(こちらも謝ってほしいわけではなく)
地道に階段を1段ずつ上ってもらいたいだけです。
せめて「赤の他人が読んで理解できる、現象を再現できる」くらいはやりましょう。
理解力関係ない部分です。あくまで配慮の問題(あと本当に解決する気があるかどうか)
すみません。
なんかアドバイス得られたらな程度に気軽に質問をしてかもしれません。
まだまだうまく伝えられないので、もう少し起こっている現象や困っている箇所に対して。
相手が理解できるような質問できるよう配慮したいと思います。
あなたの回答
tips
プレビュー