Проверка has_many: через условия в rspec - PullRequest
0 голосов
/ 05 февраля 2020
class Company
  has_many :permissions
  has_many :roles,->{where("roles.created >= ?",Date.today-1.day)}through: :permissions
end

class Role
  has_many :permissions
  has_many :companies,through: :permissions
end

class Permission
  belongs_to :role
  belongs_to :company
end

Как выполнить rspe c тестирование для такого рода ситуаций, у него должно быть много ролей

(roles.created_at >= Date.today-1.day)" do
    ass = Company.reflect_on_association(:roles)
    ass.macro.should == :has_many
    ass.options.should == {
      :through => :permissions,
      :conditions => "roles.created_at >= 05-02-2020",
    }
  end

Но spe c потерпел неудачу, потому что метод условий там устарел, как проверьте область действия здесь и проверьте область действия выражением where "roles.created_at >= 05-02-2020"

1 Ответ

1 голос
/ 05 февраля 2020

Вы можете использовать камень для совпадений , который даст вам так много полезных совпадений. Вот совпадения ActiveRecord для имеет много ассоциаций. В вашем случае это будет полезно:

class Person < ActiveRecord::Base
  has_many :coins, -> { where(quality: 'mint') }
end

# RSpec
RSpec.describe Person, type: :model do
  it { should have_many(:coins).conditions(quality: 'mint') }
end
...