Rails 使用同一命名空间中的模型作为 belongs_to 引用,如何从外部引用模型

Posted

技术标签:

【中文标题】Rails 使用同一命名空间中的模型作为 belongs_to 引用,如何从外部引用模型【英文标题】:Rails use model in the same namespace for belongs_to reference, how to reference model from outside 【发布时间】:2018-11-09 02:19:22 【问题描述】:

我正在开发一个 Rails 应用程序,目前我们按模块构建应用程序。目前我们有 2 个独立的用户模型:UserFreight::Customer::User

我有一个新模型Freight::Customer::MembershipStatus 看起来像这样:

class Freight::Customer::MembershipStatus < ActiveRecord::Base

  belongs_to :customer, class_name: 'Freight::Customer'
  belongs_to :created_by, class_name: 'User'

  validates :from, presence: true
  validates :to, presence: true
  validates :customer, presence: true
  validates :status, presence: true
end

在这种情况下,created_by 是对User 的引用。但是当代码运行membership_status.created_by时,rails会尝试寻找Freight::Customer::User,我认为这是因为Rails首先尝试在同一个模块中寻找模型。

有没有办法将此模型配置为使用外部 User 模型类?

【问题讨论】:

【参考方案1】:

你可以使用这种类型获取用户类,试试这个。

class Freight::Customer::MembershipStatus < ActiveRecord::Base

  belongs_to :customer, class_name: 'Freight::Customer'
  belongs_to :created_by, class_name: '::User'

  validates :from, presence: true
  validates :to, presence: true
  validates :customer, presence: true
  validates :status, presence: true
end

【讨论】:

谢谢,它对我有用,一直在寻找这个

以上是关于Rails 使用同一命名空间中的模型作为 belongs_to 引用,如何从外部引用模型的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中的命名空间模型:联合的状态是啥?

命名空间模型中的 Rails 关联

列出存在于另一个模型中的所有关联模型记录,该模型存在于 rails 中的另一个命名空间中

如何避免 Rails 脚手架将模型放入命名空间

在另一个命名空间中添加一个模型作为外键

Rails 4:在没有命名空间模型的子路径中组织 Rails 模型?