删除存在于另一个命名空间 rails 中的模型

Posted

技术标签:

【中文标题】删除存在于另一个命名空间 rails 中的模型【英文标题】:Delete a model present in another namespace rails 【发布时间】:2019-05-25 04:10:59 【问题描述】:

在 Rails 中,当我将一个模型作为另一个模型的外键时,我可以删除该模型,同时指定它的关系,例如:

class User < ApplicationRecord
  has_many :garments, dependent: :destroy  
end

但是如果我有一个模型是在另一个命名空间中创建的,比如超级管理员,那么在这种情况下如何编写依赖销毁关系 例如我正在使用:

class User < ApplicationRecord
  has_one superadmin::company , dependent: :destroy
end 

这是不正确的。 模型公司存在于命名空间超级管理员中,请告诉他们是否是正确的方法。提前致谢

【问题讨论】:

【参考方案1】:
class User < ApplicationRecord
  has_one :company, :class_name => "Superadmin::Company", :dependent => :destroy
  #has_many :companies, :class_name => "Superadmin::Company", :dependent => :destroy
end

【讨论】:

【参考方案2】:

不正确,类名引用模型和命名空间的方式不正确:

不正确:

class User < ApplicationRecord
  has_one superadmin::company , dependent: :destroy
end 

正确:

class User < ApplicationRecord
  has_one :company, :class_name => "Superadmin::Company", :dependent => :destroy
end

【讨论】:

以上是关于删除存在于另一个命名空间 rails 中的模型的主要内容,如果未能解决你的问题,请参考以下文章

命名空间模型中的 Rails 关联

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

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

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

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

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