【发布时间】:2014-12-12 06:36:31
【问题描述】:
我有以下型号:
class ServiceProvider < ActiveRecord::Base
has_many :versions, class_name: "ServiceProviderVersion"
end
class ServiceProviderVersion < ActiveRecord::Base
belongs_to :service_provider
has_many :service_provider_roles, :through => :service_provider_to_role_maps
scope :effective, -> { where("effective_date <= ?", Time.now).order('effective_date desc') }
end
class ServiceProviderToRoleMap < ActiveRecord::Base
belongs_to :service_provider_version
belongs_to :service_provider_role
end
class ServiceProviderRole < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
has_many :service_provider_versions, :through => :service_provider_to_role_maps
has_many :service_provider_to_role_maps, :dependent => :destroy
end
现在我正在尝试获取所有有效且属于特定角色的服务提供商。理想情况下,我想执行以下操作
ServiceProviderVersion.effective.by_role('Admin')
但是,由于ServiceProviderVersion.effective 返回的不仅仅是一条记录,我无法在 ServiceProviderVersion 上定义一个按角色过滤的范围。
有什么方法可以实现吗?我正在使用 Rails4
【问题讨论】:
标签: ruby-on-rails ruby scope