現在Sinatraで記事投稿画面の制作をしています。
記事をmarkdownで入力し、その中に画像タグを追加する場合(複数可)はその画像もformにて送信する、という処理を作っています。
流れとしては記事内に画像タグがあればinputタグを生成して、記事内の画像タグ数とフォームにて送られてくる画像の数が正しいかと画像自体の検証(jpgやpngであるかなど)を行い、次に記事の内容の検証、それらがすべてOKならDBに保存。
記事内に画像がなければ記事の検証のみにしてDBに保存、という感じの分岐をしています。
これらの処理をコードに落とすと、どうしてもメインの処理(DBに保存する)とそれらがダメだった場合のレンダリングを二回記述する事になってしまいます。
Ruby
1 2@post = { 3 tite: params[:title], 4 body: params[:body] 5} 6 7unless params[:file].nil? 8 # postはモデルを持っているためvalid?で検証、画像ファイルは自作メソッドで検証 9 if file_valid?(@post.body, params[:file]) && @post.valid? 10 # 画像を保存してredirect 11 else 12 # render :index 13 end 14else 15 if @post.valid? 16 # 画像を保存してredirect(上と全く同じ処理) 17 else 18 # render :index 19 end 20end
可読性や冗長性・メンテの面でなんかとってもイマイチな感じなのですが、これは良い書き方でしょうか?
これをもっと上手く書く方法があれば、教えて頂けると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/07 12:45