0

什么时候适合(如果有的话)使用关联方法而不是范围?这是一个示例,我认为可以保证范围内的关联方法:

我希望能够通过调用类似user.accreditations.current.

class User < ActiveRecord::Base
  has_many :accreditations do
    def current
      where(state: 'complete').order(:created_at).last
    end
  end
end

class Accreditations < ActiveRecord::Base
  belongs_to :user
end

这种策略感觉更好,因为“当前”方法是在相关的用户模型中定义的。调用 Accreditation.current 并不真正相关,因为没有用户提供上下文就没有当前性的概念。

这是使用范围的相同结果:

class Accreditations < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :accreditations

  scope :current, -> { where(state: 'complete').order(:created_at).last }
end
4

1 回答 1

0
class User < ActiveRecord::Base
  has_one :current_accreditation, -> { where(state: 'complete').order(:created_at).last }, source: :accreditations
end

也许?似乎有几种方法可以给猫剥皮。

于 2013-12-05T17:36:29.373 回答