我可以定义一个具有额外输入变量的实例方法吗?

Can I define an instance method that has an additional input variable?

我正在寻找有关您是否可以以及是否最好使用附加输入变量定义实例方法的说明,例如

class Job < ActiveRecord::Base
    def instance_method( variable_1 )
    end
end

这样我就可以打电话给:

@job.instance_method( @variable_1)

这是公认的推荐方法吗?或者定义一个 class 方法会更好吗?

是的,这应该没有问题。这就是 setter 方法的工作原理。是否定义 class 方法取决于你想做什么:如果你想做一些与实例相关的事情,你应该使用实例方法,如果你想访问所有对象共有的东西class,然后使用 class 方法。示例:

class Car < ActiveRecord::Base
  def car_speed(speed)
     #set speed for this car.
  end

  def self.number_of_cars
     Car.all.count
  end
end


Car.number_of_cars #Returns the number of cars saved in the DB

red_car = Car.new
red_car.car_speed(10) #Makes the red car go 10 MPH

是的,您可以根据需要定义任意多个输入变量。如果你想分配一个默认值,你也可以这样做

class Job < ActiveRecord::Base
    def instance_method( variable_1 = default_value )
    end
end