【问题标题】:Ruby On Rails - Grape - ActiveRecord from JSON bodyRuby On Rails - 葡萄 - 来自 JSON 正文的 ActiveRecord
【发布时间】:2014-05-22 01:19:36
【问题描述】:

使用葡萄从 json 创建新的ActiveRecord 的正确方法是什么?我是否在我的用户模型中使用attr_accessible 来避免ActiveModel::ForbiddenAttributesError 或者它是如何工作的?

我正在使用 Rails 4.0.4 和 ruby​​ 1.9.3p545。

型号

class User < ActiveRecord::Base
  #maybe attr_accessible??
end

POST 正文

{
  "first_name": "John",
  "last_name": "Doe"
}

葡萄

version :v1, :format => :json
...
post do
  #what goes here?
  user = User.new params
  user.save!
end

【问题讨论】:

    标签: ruby-on-rails ruby json activerecord grape


    【解决方案1】:

    推荐的方法是不使用批量分配,而是逐步分配每个参数。就像在 Grape README 示例中所做的那样。

    如果您对使用批量赋值有强烈的感觉,您可以使用protected_attributes gem 来获取 attr_accessible 功能。

    但是,如果您有这么多参数,以至于您很想使用批量分配,那么您可能需要重构正在创建的资源。

    【讨论】:

    • 我已经解决了这个问题:def permitted_params @permitted_params ||= declared(params, include_missing: false) end 在助手中,这有什么不好吗?
    • 问题不在于参数的数量,而在于不断的重构正在扼杀我的开发时间。一旦我达到满意的程度,我当然会将其锁定并静态分配参数。谢谢。
    • 使用允许/声明的参数比使用基于模型的方法更好,至少更灵活。警告就像 Rails 中的强大参数一样,很容易允许一切;)但如果这只是为了让你暂时离开,这一切都很好
    • 现在gem的名字是'hashie-forbidden_attributes'
    猜你喜欢
    • 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
    相关资源
    最近更新 更多