0
我有以下模型设置,并且您可以看到,Tenant
与:current_rental_agreement
有has_one
关系,这是一个范围has_one
。FactoryGirl范围has_one返回零
class Property < ActiveRecord::Base
has_many :rental_agreements
has_one :current_rental_agreement, -> { where("'#{ Date.today.to_s(:db) }' BETWEEN start_date AND end_date") }, class_name: 'RentalAgreement'
has_one :tenant, through: :current_rental_agreement
end class
class Tenant < User
has_many :rental_agreements
has_many :properties, through: :rental_agreements
has_one :current_rental_agreement, -> { where("current_date BETWEEN start_date AND end_date") }, class_name: 'RentalAgreement'
has_one :property, through: :current_rental_agreement
end
class RentalAgreement < ActiveRecord::Base
belongs_to :property
belongs_to :tenant
end
这适用于除测试以外的所有事情。因为这在测试中不起作用,所以has_one
与property
的关系显然不起作用。
我有以下工厂成立:
FactoryGirl.define do
factory :agent do
first_name "James"
last_name "Smith"
end
factory :landlord do
first_name "Bob"
last_name "Builder"
end
factory :tenant do
first_name "Jack"
last_name "Builder"
end
factory :rental_agreement do
start_date 1.day.ago
end_date 1.year.from_now
end
end
我打造出来,像这样:
agency = create(:agency)
agent = create(:agent, agency: agency)
landlord = create(:landlord, agency: agency)
property = create(:property, agency: agency, account_manager: agent, landlord: landlord)
tenant = create(:tenant, agency: agency)
rental_agreement = create(:rental_agreement, property: property, tenant: tenant, agent: agent)
当我运行这个然而,这一切似乎很好..他们都返回了什么他们的意思是返回,除了当我打电话tenant.current_rental_agreement
返回nil
,如tenant.property
。 tenant.rental_agreements
和tenant.properties
虽然工作。
看起来虽然rental_agreement
记录已经创建,但似乎没有连接起来,我不知道为什么!
任何人有任何想法?