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
記錄已經創建,但似乎沒有連接起來,我不知道爲什麼!
任何人有任何想法?