在Rails模型中搜索相同的类

时间:2016-01-24 07:27:13

标签: ruby-on-rails ruby

使用Rails 3.2.17。我的模型中有以下内容:

class Shop < ActiveRecord::Base
  before_create :set_next_position

  private

  def set_next_position
    self.position = self.class.where(country_id: country_id).
                    maximum(:position).to_i + 1
  end
end

selfShop个对象。请注意相等于self.class.where...的行Shop.where...。在这种情况下,我不知道什么是最佳做法 - 使用Shop.where...self.class.where...?这对我来说是代码味道。

2 个答案:

答案 0 :(得分:1)

我会说self.class.where比班级内的Shop.where好。这样,如果出于某种原因想要重命名类等,则不必更改内部。

答案 1 :(得分:0)

我现在唯一的区别就是继承。当你有:

class Base
  def self.example
    42
  end

  def run_example
    Base.example
  end
end

class A < Base
  def self.example
    'not 42'
  end
end

A.new.run_example
=> 42

所以当我没有继承权时,我更喜欢Base.example。在另一种情况下self.class.example