我正在寻找澄清是否可以,以及是否有最佳实践来定义带有附加输入变量的实例方法,例如
class Job < ActiveRecord::Base
def instance_method( variable_1 )
end
end
这可以让我打电话:
@job.instance_method( @variable_1)
这是一种被接受和推荐的方法吗?或者定义一个类方法会更好吗?
答案 0 :(得分: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
答案 1 :(得分:0)
是的,您可以根据需要定义任意数量的输入变量。如果要分配默认值,也可以执行
class Job < ActiveRecord::Base
def instance_method( variable_1 = default_value )
end
end