こんにちは。
リファクタリングを行いたいのですが、いい方法が思いつかず、相談です。
状況としては、同一人物の同じ文
が投稿された場合に、登録されている文章の長さを比較
して、長文に更新するようにしています。
validate :validate_sentence def validate_sentence sentence = body.strip.split(/[。!!\s]/)←文章を文に直す x = sentence.flat_map{ |x| Blog.where('user_id = ? AND body like ?', user_id, "%#{x}%") }←同一ユーザーの文章が登録されているかを探している if x.present? if body.length > x[0].body.length←ここのx[0]がもっといい書き方がありそう short_blog = x[0] ActiveRecord::Base.transaction do short_blog.destroy! Blog.create!(id: short_blog.id, body: body, category_id: short_blog.category_id) end else errors.add(:same_sentence, "はすでに登録されています") end end end
集めた配列が1つしかない状態にしているのですが、その後のx[0]
として、取り出しているのをもっと簡潔にしたいです。
何かいい方法はありますでしょうか?m(_ _)m
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。