小编Pio*_*zek的帖子

脂肪模型重构的最佳实践

我试图让我的胖子User模型不那么笨重.我正在使用值对象来表示它们的自定义值和操作,并且我坚持使用ActiveSupport::Concerns和模块.我读是一个灵感.

我把这样的帮助方法:

def is_a_wizard?
  power_level >= WIZARD_POWER
end

def just_became_a_wizard?
  power_level == WIZARD_POWER
end
Run Code Online (Sandbox Code Playgroud)

进入模块,并将它们作为一种扩展包含在内.但是,它很难阅读和维护,我在视图和控制器中都需要它们中的一些(例如用于向导身份验证).我应该把它们放在哪里?在使用它们时创建服务对象?

ruby refactoring ruby-on-rails

5
推荐指数
1
解决办法
316
查看次数

Rails 控制器跳过 after_action

假设我有一个控制器,如下所示:

class ExampleController < ApplicationController

  after_action -> { puts 'Call me only on success' }

  def create
    obj = Obj.create(obj_params)
    if obj.errors.empty?
      render json: obj
    else
      render json: { errors: obj.errors }, status: 422
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

有没有一种干净的方法来阻止所有 after_actions 的执行?我知道的事情:

  1. 设置某种实例变量并在每个 after_action
  2. render :something and return不停止after_action小号
  3. 引发错误(如create!)会起作用,但是当我不想返回错误细节并仍然使用它进行响应时,我会使用它422

我会满足于类似的东西 render :foo and do_not_call_afters

ruby ruby-on-rails

2
推荐指数
1
解决办法
1998
查看次数

标签 统计

ruby ×2

ruby-on-rails ×2

refactoring ×1