set_any作为实例类变量的私有方法

问题描述 投票:0回答:2

使用回调方法为类变量设置值的set_any方法(私有)是否可行?

示例:

NameController < ApplicationController
  before_action :set_number, only: :any_number

  def any_numer
    @number
  end

  private

  set_number
    @number = 10 #Any number
  end
end

谢谢!

ruby-on-rails ruby ruby-on-rails-5
2个回答
0
投票

我不确定问题到底是什么...但是看起来您正在尝试创建类的新实例,并让实例变量@number始终以10的值开头。您应该如何使用它,但是更多的Ruby方法是使用Model类,该类具有#initialize方法,该方法将@number设置为10。这样,每次从类实例化一个新实例时,模型都会处理该逻辑。

例如...

    class Whatever 
      attr_accessor :number

      def initialize
        @number = 10
      end

     # other class and instance methods ........
    end

希望有帮助!


0
投票

这是我对您要执行的操作的解释。请注意,它是非常主观的,可以由许多其他开发人员以其他多种方式实现。

# /app/controllers/names_controller.rb

class NamesController < ApplicationController # controllers are classes in Rails (assuming you're using Ruby on Rails)
  helper_method :number, only: %i(:any_number) # this exposes it to the controller action or any attached views should you need to render something

  def show # Rails uses this name by convention for GET endpoints
    render(
      :status => 200,
      :text => number # reference the method, not the instance variable
    )
  end

private # this should left-align with the top-level class

  def number
    @number ||= fetch_number # memoizes/caches the result of fetch_number
  end

  def fetch_number
    10 # would usually be something more complex than this literal return value
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.