ruby-on-rails - Rails 请求参数中出现的附加属性

标签 ruby-on-rails ruby ruby-on-rails-3 httprequest

我一直在我的 Rails 应用程序中看到一些功能,通过这些功能我传递给 Rails 的参数被封装在 Controller 中请求和参数之间的某处。

以前这并不重要,但我最近遇到了这方面的问题,因此决定尝试找出发生这种情况的原因。我运气不好,希望这里有人能给我指明正确的方向。

我的客户端请求负载如下所示:

{
    "id"=>"1",
    "email" => "peter.hamilton10@imperial.ac.uk",
    "first_name" => "Peter",
    "last_name" => "Hamilton",
    "year" => 3,
    "private_attr" => "something"
}

在 Rails 中,日志显示了这一点

Started PUT "/students/1" for 127.0.0.1 at 2012-11-29 13:20:56 +0000
Processing by StudentsController#update as JSON
  Parameters: {"id"=>"1",
               "email" => "peter.hamilton10@imperial.ac.uk",
               "first_name" => "Peter",
               "last_name" => "Hamilton",
               "year" => 3,
               "private_attr" => "something",
               "student" => {
                   "email"=>"peter.hamilton10@imperial.ac.uk",
                   "first_name"=>"Peter",
                   "last_name" => "Hamilton",
                   "year"=>3
               }
              }

student 属性来自哪里,它的字段是如何生成的?

我知道不能批量分配的属性不会出现(如上图所示 private_attr)所以我假设它的提取字段用于当前 Controller 的模型,但除此之外我有点损失...

更新:模型

# Schema
# create_table "students" do |t|
#   t.string   "email"
#   t.string   "first_name"
#   t.string   "last_name"
#   t.integer   "year"
#   t.integer   "private_attr"
# end
class Student < ActiveRecord::Base
  attr_accessible :email, :first_name, :last_name, :year
end

(注意:我不希望 private_attr 能够通过,我只是将其作为测试并认为它可能有用)

请求实际上不是来自表单,而是来自手动生成的 ajax 请求。

最佳答案

查看包装参数:

http://edgeapi.rubyonrails.org/classes/ActionController/ParamsWrapper.html

我不知道您是否在使用 Rails 4,但这是幕后发生的最新版本。

关于ruby-on-rails - Rails 请求参数中出现的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13627075/

相关文章:

ruby - 在 Ruby 中产生一个独立的线程或进程

ruby-on-rails - 如何在 Rails 中暂停和恢复 delayed_job 任务

ruby - 如何在 ruby​​ 中替换字符串中的\r

ruby-on-rails - 在 ubuntu 上安装 Rails - 错误 : Failed to build gem native extension

ruby - 在 rails devise ldap gem 中检查组成员身份,它在 yaml 中吗?

ruby-on-rails-3 - Facebook 身份验证对话框(JS SDK)返回空白屏幕

sql - 为什么这个查询运行缓慢?

ruby-on-rails - Rails 从 Controller 渲染部分

ruby-on-rails - 如何在heroku服务器上安装red5

ruby-on-rails - 使用同一 Controller 使用STI路径