gpt4 book ai didi

ruby-on-rails - 模型方法应该调用 'save' 本身吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:13 26 4
gpt4 key购买 nike

假设我们在模型中有一个方法

  1. 只需要调用已保存的记录
  2. 可能会更新模型本身,因此之后需要再次保存模型

“保存”调用是否应该像下面的代码一样发生在方法内部

def result
save! if new_record?

# do some funky stuff here that may also change the model state
# ...
# And calculate the return value
search_result = "foo" # Let's say "foo" is the value we calculated

save! if changed?
search_result # return
end

还是应该由外部观察者( Controller )负责根据需要调用保存?

最佳答案

如果您的方法真的、真的需要做所有这些,那就去做吧。

但是,我会通过查看您这样做的方法来明确说明(此处的评论可能很好),并且 肯定 使它成为 bang_method! 这样调用它的人就可以清楚地知道,此方法很可能会随心所欲地扰乱对象。

此外,方法名称 result(我知道,这可能不是您真正的方法名称)在某种程度上暗示您只是在获取数据,仅此而已。也许 load_result! 在这里更合适,以更清楚地表明您不仅在访问属性,而且实际上正在执行大量操作来获取它。

关于ruby-on-rails - 模型方法应该调用 'save' 本身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896911/

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