2017-06-27 130 views
0

我使用的命名空間,我有後續機型:Ruby on Rails的,命名空間,模型和many-to-many關聯

class Administradora::Owner < ApplicationRecord 
    has_many :owner_mails, foreign_key: :administradora_owner_id 
    has_many :junta_mails, through: :owner_mails 
end 

class Junta::Mail < ApplicationRecord 
    has_many :owner_mails, class_name: "OwnerMail", foreign_key: :junta_mail_id 
    has_many :adminstradora_owners, through: :owner_mails 
end 

class OwnerMail < ApplicationRecord 
    belongs_to :administradora_owner, :foreign_key => :owner_id, :primary_key => :administradora_owner_id 
    belongs_to :junta_mail, :foreign_key => :mail_id, :primary_key => :mail_id 
end 

軌控制檯我執行以下操作和正常工作:

Administradora::Owner.first.owner_mails 
Junta::Mail.find(4).owner_mails 

但如果我嘗試:

x = OwnerMail.create(administradora_owner_id: 4,junta_mail_id: 3, created_at: "2016/04/04", updated_at: "2016/04/04") 
    (0.2ms) BEGIN 
    (0.5ms) ROLLBACK 

我得到以下錯誤:

ActiveRecord::RecordInvalid: Validation failed: Administradora owner must exist, Junta mail must exist

IDS 34不要在他們的表存在。

出了什麼問題?

+0

什麼是您的Rails版本? –

回答

0

我想你只需要在belongs_to方法中指定class_name即可。 像這樣:

belongs_to :administradora_owner, class_name: 'Administrator::Owner' ....