【问题标题】:Can I define an instance method that has an additional input variable?我可以定义一个具有附加输入变量的实例方法吗?
【发布时间】:2015-05-09 03:19:05
【问题描述】:
我正在寻找有关您是否可以以及最佳实践是否可以定义具有附加输入变量的实例方法的说明,例如
class Job < ActiveRecord::Base
def instance_method( variable_1 )
end
end
这样我就可以打电话了:
@job.instance_method( @variable_1)
这是一种被接受和推荐的方法吗?还是定义一个类方法会更好?
【问题讨论】:
标签:
ruby-on-rails
methods
【解决方案1】:
是的,这应该没有问题。这就是 setter 方法的工作方式。你是否定义一个类方法取决于你想要做什么:如果你试图做一些与实例相关的事情,你应该使用实例方法,如果你试图访问类的所有对象共有的东西,然后使用类方法。示例:
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
【解决方案2】:
是的,您可以定义任意数量的输入变量。如果你想分配一个默认值,你也可以这样做
class Job < ActiveRecord::Base
def instance_method( variable_1 = default_value )
end
end