【问题标题】:Ruby on Rails, namespace, models and many-to-many associationRuby on Rails、命名空间、模型和多对多关联
【发布时间】:2017-11-30 22:45:43
【问题描述】:

我正在使用命名空间,并且我有以下模型:

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

rails 控制台中,我执行以下操作并且工作正常:

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:验证失败:Administradora 所有者 必须存在,Junta 邮件必须存在

ID 34 确实存在于他们的表中。

怎么了?

【问题讨论】:

  • 你的 Rails 版本是多少?

标签: ruby-on-rails activerecord namespaces


【解决方案1】:

我猜你只需要在belongs_to 方法上指定class_name。 像这样:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多