在模型轨道中编写控制器代码

时间:2017-09-19 12:35:00

标签: ruby-on-rails ruby

我有ConversionRate型号

class ConversionRate < ActiveRecord::Base
end

我想转移模型我的控制器方法find_something

class ConversionRatesController < ActionController::Base
  #....
  def find_something (param)
    rate = ConversionRate.where(:param=> param)
  end
 end

我该怎么做?我在想这样的事情

class ConversionRate < ActiveRecord::Base
 def self.find_something(param)
   return self.where(:param=> param)
end

1 个答案:

答案 0 :(得分:2)

您似乎已经找到了解决方案:

class ConversionRate < ActiveRecord::Base
 class << self
    def find_something(param)
     where(:param=> param)
    end
  end
end

另一种方法是使用scope

class ConversionRate < ActiveRecord::Base
  scope :find_something, ->(param) { where(param: param) }
end

然后你可以从控制器中调用它,如ConversionRate.find_something(params)

如果您需要在param上执行某些验证,我会鼓励第一种方法,否则第二种方法非常简单。