【发布时间】:2019-08-27 22:00:07
【问题描述】:
如何让这个代码块变干? 我知道干意味着不要重复自己,但我没有看到任何明显的重构机会。
索引、显示、编辑和创建似乎是基本/必要的方法。它们对我来说似乎很干。
后面的方法我不太清楚。
到目前为止,除了谷歌搜索之外,我还没有尝试过任何其他方法。
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def edit
@user = User.find(params[:id])
end
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
Slack.notify_channel
end
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
Slack.notify_channel
end
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url, notice: 'User was successfully destroyed.' }
format.json { head :no_content }
end
Slack.notify_channel
end
private
def user_params
params.require(:user).permit(:username, :email)
end
end
此代码 sn-p 没有附加 Rails 后端。我假设这只是理论上的——希望我们重构代码以使其更短。
【问题讨论】:
-
欢迎来到 SO!对我来说似乎也很干燥¯\_(ツ)_/¯。
create和update非常相似,但我认为将它们转储到一个有大量参数和一个小身体的助手中有点为时过早和令人困惑。我会说去代码审查,但 you have to be the author of the code 才能工作。 -
感谢@ggorlen 的回复。明天我将由我的 TA 运行它。
标签: ruby class methods controller dry