【问题标题】:Is there any way to serialize model validators to json OR any other common pattern?有没有办法将模型验证器序列化为 json 或任何其他常见模式?
【发布时间】:2014-10-09 12:41:34
【问题描述】:

我有 SPA 和几个模型,我想为 REST api 创建表单,但我不想在 JS 和 Ruby 中复制验证器数据。

我想要的只是从 rails 获取验证器数据(必需、只读、类型、默认、选择、名称、标签、help_text)并从中呈现表单。

问题是我没有看到任何将模型序列化为 json 的解决方案。使用 Python、Django REST 框架,我可以发出 OPTIONS 请求,它会为我提供有关模型字段、解析器、方法等的完整信息。Rails 是否有类似的解决方案?

【问题讨论】:

    标签: ruby-on-rails json forms models


    【解决方案1】:

    Rails 3 和 Rails 4 中提供了验证反射:MyModel.validators (railscast)。这将为您提供一个包含所有带有选项的验证器的数组,例如:

    [
        [0] #<ActiveRecord::Validations::PresenceValidator:0x007fe542431b40 @attributes=[:name], @options={}>,
        [1] #<UrlValidator:0x007fe542431050 @attributes=[:url], @options={:allow_blank=>true}>
    ]
    

    如果你想得到validation errors,选项是通过json响应传递@object.errors.messages

    此外,您可以使用AMS 将模型数据序列化为 json (railscast)。

    希望对你有帮助。

    【讨论】:

    • Ty,很容易将错误传回,我知道。 validators 看起来很酷,但我需要为这些类实例编写序列化程序,而 AMS 不会提供太多帮助。我想知道,有没有现成的解决方案?
    • 我找不到任何 rtu 解决方案。但是,获得所需的哈希应该不会花费太长时间:stackoverflow.com/questions/24976553/…
    • 悲伤。我认为 Rails 是一个如此大的项目,它肯定会在这个问题在 Django 中解决之前至少几个月解决。看来 Django 更擅长构建 REST 服务,该死的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多