0

我想知道是否有其他人遇到过我见过的类似问题-这就是发生的事情;

我有一个使用 MongoDB 和 Mongoid 的 Rails 3.2.14 应用程序我有一个名为 Selectfield 的模型(如表单中的选择标记),其属性名为 option_values,它是一个哈希:

class Selectfield < Inputfield
    #inherits name and label from Inputfield

    field :option_values, type: Hash # key/vals for <option> in <select>
end

长话短说,当我保存一个新的 Selectfield 时,有时我会收到与 option_values 哈希相关的错误,随后看起来好像所有其他记录都已丢失。转到 inputfields 控制器,即使我知道我保存了 10 多条记录,它也不会显示任何记录。在我修复表单中的错误后,这将持续存在。

奇怪的是,一旦我创建了一个没有错误的新输入字段,所有以前消失的记录都会出现。我认为这可能与哈希格式中的错误有关,可能是引号放错了。也许格式不正确的哈希导致了错误,而新记录会以某种方式解决它?

虽然在短期内我已经能够解决这个问题,但我最担心的是破坏 MongoDB 以使其看起来所有记录都已丢失是多么容易。有没有人看到这个问题?我只使用 MongoDB 一个星期,所以我想知道这是否是其他人看到的问题。我用谷歌搜索了这种类型的错误,没有看到任何有类似问题的人。

我还要告诉 Mongoid 还是 MongoDB?还是我们将其归结为用户错误?

4

1 回答 1

0

我发现了这个问题 - Selectfield 和 Textfield 是从 Inputfield 继承的类,使用单表继承。在我尝试单独创建其中一个之前,不会加载 Selectfield 和 Textfield 模型类。由于我在 DEV 模式下运行应用程序,因此 DEV 环境的默认设置不会缓存类 - 可能有更好的方法在应用程序启动时加载类,但此设置更改起到了作用。我把它放在 config/environements/development.rb 文件中;

config.cache_classes = true

希望这可以帮助任何有这个问题的人。也许一个标准的 ActiveRecord 应用程序不会有这个问题,但我不能肯定地说。

于 2013-10-13T20:46:39.867 回答