2017-07-25 59 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