gpt4 book ai didi

ruby-on-rails - 为 DRYness 重构 Controller 代码

转载 作者:行者123 更新时间:2023-12-04 05:43:16 25 4
gpt4 key购买 nike

我在 Controller 的创建和更新操作中有很多这样的语句:

@company.set_preference(:api_username, params[:company]['api_username']) if params[:company]['api_username']
@company.set_preference(:api_password, params[:company]['api_password']) if params[:company]['api_password']

我想知道我是否可以重构这些以使我的代码更干。我敏锐地意识到它们可能属于模型(关于胖模型和瘦 Controller ),但我不确定该怎么做。谁能赐教一下?

提前感谢您的宝贵时间,

加夫

最佳答案

您要避免的是 @company.set_preference 的重复吗?还是 params[:company].. 的重复?

如何向您的 Company 模型添加一个方法,例如:

def update_preferences(prefs)
prefs.each_pair do |pref_name, value|
set_preference(pref_name.to_sym, value)
end
end

然后调用它

@company.update_preferences(params[:company])

您还可以添加一个检查以确保只设置了有效的首选项,例如

VALID_PREFERENCES = ['api_username', 'api_password']

def update_preferences(prefs)
prefs.each_pair do |pref_name, value|
set_preference(pref_name.to_sym, value) if VALID_PREFERENCES.include?(pref_name)
end
end

关于ruby-on-rails - 为 DRYness 重构 Controller 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com