2017-07-25 83 views
1
Rails的5關聯鍵查找

我有以下型號:命名空間與ActiveRecord的

class Supervision::ApplicationRecord < ActiveRecord::Base 
    self.abstract_class = true 

    def self.table_name_prefix 
    "supervision_" 
    end 
end 
--------------- 
class Supervision::Activity < Supervision::ApplicationRecord 
    has_one :supervision_missed_visit, class_name: Supervision::MissedVisit 
    (...) 
end 
--------------- 
class Supervision::MissedVisit < Supervision::ApplicationRecord 
    belongs_to :supervision_activity, class_name: Supervision::Activity 
    (...) 
end 

而且我也有這種模式,這是沒有命名空間:

class Activity < ApplicationRecord 
    (...) 
end 

每當我試着到達所述Supervision::MissedVisit通過其has_one關係,如在

@supervision_activity.supervision_missed_visit

我得到以下錯誤:

ERROR: column supervision_missed_visits.activity_id does not exist 

如何讓這個Rails的理解,我確實找supervision_missed_visits.supervision_activity_id

回答

1

您可以指定外鍵:

has_one :supervision_missed_visit, class_name: Supervision::MissedVisit, foreign_key: 'supervision_activity_id'

另一種方式來做到這一點是創建在Supervision::Activity實例方法:

def missed_visit 
    Supervision::MissedVisit.where(supervision_activity_id: id).take 
end