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

时间:2015-05-09 03:19:06

标签: ruby-on-rails methods

我正在寻找澄清是否可以,以及是否有最佳实践来定义带有附加输入变量的实例方法,例如

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

这可以让我打电话:

@job.instance_method( @variable_1)

这是一种被接受和推荐的方法吗?或者定义一个类方法会更好吗?

2 个答案:

答案 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