mongoid多态关联错误

2024-04-08

我在使用带有多态字段的 mongoid-3.0.6 时遇到一些问题。 使用 Rails 3.2.8 和 ruby​​ 1.9.3

使用正常的多态关系:

class Shirt
  include Mongoid::Document

  field          :name,        localize: true

  belongs_to     :itemizable,  polymorphic: true
end

class Item
  include Mongoid::Document

  field       :price,     type: Float
  field       :quantity,  type: Integer,   :default => 1

  has_one     :product,   as: :itemizable

  accepts_nested_attributes_for :product
end

通过元数据可以获得相同的关联:

>> Item.reflect_on_association(:product)
#<Mongoid::Relations::Metadata
   autobuild:    false,
   class_name:   Product,
   cyclic:       nil,
   dependent:    nil,
   inverse_of:   nil,
   key:          _id,
   macro:        has_one,
   name:         product,
   order:        nil,
   polymorphic:  true,
   relation:     Mongoid::Relations::Referenced::One,
   setter:       product=,
   versioned:    false>

>> item = Item.new
#<Item _id: 50606c1668ce87692e000003, _type: nil, created_at: nil, updated_at: nil, deleted_at: nil, price: nil, quantity: 1>

但当我跑步时

>> item.product = Shirt.new or >> item.build_product

我总是遇到同样的错误

NameError: uninitialized constant Product

全栈错误 https://gist.github.com/3776248

有什么想法吗?

提前致谢。

Solved

  • 找到动机了

需要将 class_name 添加到关系中

has_one     :product,   as: :itemizable, class_name: "Toy"

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongoid多态关联错误 的相关文章

  • 如何在rails活动记录查询中使用包含内部的联接?

    我只是想改进查询 从而提高应用程序的性能 Student includes parents gt emails where emails email address is not null and emails email address
  • 如果“git push heroku master”失败怎么办?

    我的本地 Windows XP 计算机上有一个可以运行的 Rails 应用程序 我想将其上传到 Heroku 上 我按照这个教程https devcenter heroku com articles rails3 https devcent
  • Rails 回调未执行

    在我的一生中 我试图找出为什么我的回调没有被执行sometimes 你没听错有时因为大多数时候它都是开箱即用的 我所拥有的只是两个模型之间的父 子关系 创建子记录后我所做的一切after create回调是更新 累积父字段中的所有子金额以避
  • 使用 mongod 以 utc 存储日期时如何处理时区问题?

    我有一个 mongodb 集合 其中每个文档都有一些属性和 utc 时间戳 我需要从集合中提取数据并使用聚合框架 因为我使用集合中的数据在用户界面上显示一些图表 但是 我需要根据用户的时区进行聚合 假设我知道用户的时区 从浏览器的请求或以其
  • Rails 中控制器和视图中使用的辅助方法

    我知道我可以将辅助方法放入Helper类里面的helperRails 中的文件夹 那么该方法就可以在任何视图中使用 我知道我可以将方法放入ApplicationController类和该方法可以在任何控制器中使用 控制器和视图中经常使用的方
  • Rails - MongoDB (Mongoid) 在哪里存储数据库和日志?

    我是 MongoDB 新手 Mongoid https github com mongoid mongoid我正在使用 Debian 测试 jessie sid 当我打开时 etc mongodb conf没有关于 Mongoid 存储数据
  • 如何设置搜查排序的默认值?

    简而言之 我只是想知道是否有办法使用 Ransack gem 设置排序功能的默认值 ie 目前 页面加载时我有以下内容 但相反 我想要以下内容defaults当页面加载时 是否可以通过正确配置 Ransack Gem 来做到这一点 一如既往
  • 设计..首次登录后应要求更改密码

    我在我的应用程序中使用设备作为身份验证 我需要在设备中实现功能 首次登录后 用户应要求更改密码 我尝试通过模型 after create update pass change def update pass change self pass
  • 如何在 Mongoid 中更改文档的 _type?

    我在 Rails 应用程序中有以下模型 class User include Mongoid Document end class Admin lt User end 我得到一个用户 u User find some key 并尝试更改 t
  • 为什么 Rails 找不到我的资产?

    在生产模式下 rails 似乎无法从资产管道中找到任何预编译资产 我使用的是在 CentOS 上的 RVM 内运行的 Rails 3 2 0 和 ruby 1 9 3 没有其他 Web 服务器与此应用程序一起运行 该应用程序最近才更新为使用
  • 在进行 Rails asset:precompile 时如何运行一些初始化程序?

    背景 我有一个应用程序 最近更新到了 Rails 3 2 1 从 Rails 3 0 x 并重构了 JS 和 CSS 资源以利用新的资源管道 该应用程序托管在具有 Celadon Cedar 堆栈的 Heroku 上 应用程序配置 我将应用
  • Rails 3.2.3 无法在 ubuntu 12.0.4 中使用 webrick 在 https 上工作

    一直在尝试在 ubuntu 12 0 4 中使用 webrick 获得一个新的 刚刚创建的 Rails 应用程序来在 ssl 上工作 已经尝试了我所知道的所有可能的方法 尝试使用config force ssl true in 应用程序 r
  • 无法让 mongoid 与 Rails 4 一起使用

    我是按照官方教程来的 http mongoid org en mongoid docs installation html 我在 Gemfile 中注释掉了 sqlite3 以及以下几行 gem mongoid gt 4 github mo
  • 助手在 Rails 3(.2) 中使用大量内存

    在将 Rails 2 应用程序迁移到 Rails 3 时 我遇到了内存使用量的巨大增加 经过一番研究 我发现帮助者是问题所在 取消注释视图中的任何助手会加快一切速度 我试图找到真正问题的事情 include all helpers fals
  • 将现有 MongoDB 字符串属性转换为 BSON::ObjectId

    我在 MongoDB 中有一个文档集合 其中有一个属性被存储为字符串 如果将其保存为 BSON ObjectId 会更好 集合名称是foo该字段称为bar 拥有每个领域的最佳方式是什么bar将其现有值转换为 BSON ObjectId 的实
  • 数据映射器和连接池逻辑

    所以我尝试在 Rails 3 2 8 应用程序中使用 datamapper 我有一个config initializers dm rb我加载的地方database yml hash YAML load File new database y
  • Rails 控制器创建 Model.new 和 Model.create 之间的操作差异

    我正在浏览一些 Rails 3 和 4 教程 并发现了一些我想要的见解 Model new 和 Model create 在创建操作方面有什么区别 我以为你确实使用了create控制器中的保存方法 例如 post Post create p
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号
  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many
  • 如何使 Rails 3 资源预编译速度更快?

    我有一个正在运行的 Rails 3 2 1 应用程序 我正在通过 Capistrano 进行部署deploy assets它运行deploy assets precompile task 一切工作都很好 除了编译本身非常慢 我没有那么多 C

随机推荐