ruby-on-rails - 更改 mongoid embeds_many 关联名称

标签 ruby-on-rails ruby-on-rails-3 mongodb mongoid

使用 Rails 3.2 和 Mongoid 2.4。我有一个遗留模型 Organization,它嵌入了很多 organization_members。它看起来像这样:

class Organization
  include Mongoid::Document

  embeds_many :organization_members
end

class OrganizationMembers
  include Mongoid::Document
  embedded_in :organization
end

我想做的是将我用来访问成员的方法从 organization.organization_members 更改为仅 organization.members。这是我所做的:

class Organization
  include Mongoid::Document

  embeds_many :members, class_name:"OrganizationMember"
end

class OrganizationMembers
  include Mongoid::Document
  embedded_in :organization
end

但是,现在 organization.members 返回一个空数组,而 organization.organization_members 返回以前的文档,即使它没有定义 church_members。

我如何说服 Mongoid 使用以前的嵌入式集合名称并通过新方法调用(Organization#members 而不是 Organization#organization_members)访问它?

最佳答案

有一个选项 embeds_many ,称为 store_as

class Organization
  include Mongoid::Document

  embeds_many :members, 
              class_name:"OrganizationMember", 
              store_as: 'organization_members'
end

关于ruby-on-rails - 更改 mongoid embeds_many 关联名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695050/

相关文章:

ruby-on-rails - 不同本地数据库配置 Rails

ruby-on-rails - 回形针,实际文件存储在哪里?

ruby-on-rails - ActiveRecord 验证...自定义字段名称

image - Rails 3 有合适的图片上传库吗?

MongoDB:在子文档中查找带有键的文档

mysql - 如何使用 Ruby on Rails 验证二进制字段?

ruby-on-rails - 在 Rails 3 中,如何在请求/响应周期完成后通过 Controller 调用一些代码?

ruby-on-rails - 应用程序显示错误的小时和分钟

mongodb - 相同类型的嵌入式集合

ruby-on-rails - 如何处理 rails/mongoid 中的出队连接超时?