标签: mass-assignment

"质量分配"在Laravel中意味着什么?

当我通过Laravel文档了解Eloquent ORM主题部分时,我得到了一个新术语Mass Assignment.

文档显示如何进行质量分配和fillableguarded属性设置.但经过这一切,我没有清楚地了解Mass Assignment它是如何工作的.

在我过去的CodeIgniter经历中,我也没有听说过这个术语.

有没有人对此有一个简单的解释?

php mass-assignment laravel

135
推荐指数
3
解决办法
6万
查看次数

Ruby中是否存在切片函数的相反功能?

在这篇文章中,切片函数用于仅获取参数的必要元素.我应该使用什么函数来排除params元素(例如user_id)?

Article.new(params[:article].slice(:title, :body))
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby-on-rails mass-assignment

38
推荐指数
1
解决办法
8819
查看次数

无法批量分配受保护的属性

更新代码格式以便更好地查看.

伙计们,

我一直在看这个,但我不明白这里有什么可能搞乱的.我正在使用Devise.

class User < ActiveRecord::Base
  has_many :addresses
  accepts_nested_attributes_for :addresses

  # Other stuff here
end

class Address < ActiveRecord::Base

  belongs_to :user

  validates_presence_of :zip #:street_address1, 
Run Code Online (Sandbox Code Playgroud)

结束

--------------------日志输出开始--------------------------- ---

在2011-05-28 11:43:27 -0700开始POST"/ users"for 127.0.0.1由RegistrationsController处理#create as HTML参数:{"utf8"=>"√","authenticity_token"=>"CEmdqlsmdYa6Jq0iIf5KAxxISsUCREIrFNXWkP80nhk = ",""user"=> {"email"=>"a2 @ gmail.com","password"=>"[FILT ERED]","addresses_attributes"=> {"0"=> {"street_address1"=> "234 Pitkin Ct.","zip"=>"12456"}}},"commit"=>"注册"}警告:无法批量分配受保护的属性:addresses_attributes SQL(0.0ms)BEGIN SQL(164.0) ms)SHOW TABLES
用户加载(0.0ms)SELECT users.id FROM usersWHERE(users.email= BINARY'a2 @ gmail.com')LIMIT 1 SQL(1.0ms)ROLLBACK

--------------------日志输出结束--------------------------- ---

zip已存在于发布的数据中,并且发布的数据似乎已正确格式化.在网页表单上,我收到"地址zip不能为空"的错误.我已经挖了一下导致"无法大量分配受保护属性"的警告,但没有找到任何可以帮助我的东西.

感谢您的想法和指示.

-S

ruby-on-rails mass-assignment nested-attributes

28
推荐指数
3
解决办法
6万
查看次数

有没有办法绕过质量分配保护?

我有一个Rails 3应用程序,JSON对对象进行编码,以便将它们存储在Redis键/值存储中.

当我检索对象时,我正在尝试解码JSON并从数据中实例化它们,如下所示:

def decode(json)
  self.new(ActiveSupport::JSON.decode(json)["#{self.name.downcase}"])
end
Run Code Online (Sandbox Code Playgroud)

问题是,这样做涉及质量分配,这是我不知道attr_writer能力的属性是不允许的(有充分理由我被告知!).

有没有办法可以绕过质量分配保护只是为了这个操作?

ruby ruby-on-rails mass-assignment ruby-on-rails-3

24
推荐指数
2
解决办法
8376
查看次数

Laravel 5:Model.php中的MassAssignmentException

我收到此错误:

Model.php第448行中的MassAssignmentException:_token

当我使用create方法时.请查看以下代码:

Contacts.php(型号):

class Contacts extends Model
{
    protected $table = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at'];
}
Run Code Online (Sandbox Code Playgroud)

ContactsController.php(Controller):

public function store(Request $request)
{        
    $inputs = $request->all();
    $contacts = Contacts::Create($inputs);
    return redirect()->route('contacts.index');
}
Run Code Online (Sandbox Code Playgroud)

php mass-assignment laravel eloquent laravel-5

22
推荐指数
3
解决办法
5万
查看次数

什么是Rails 3中的批量分配

我听过几个人抱怨并在Rails中发布有关群发作业的问题.我有几次同样的错误,我所做的就是attr_accessible.但是什么是大规模任务?有人可以用例子解释一下吗?

activerecord mass-assignment ruby-on-rails-3

21
推荐指数
1
解决办法
9645
查看次数

使用动态变量名一次分配多个变量

我知道我可以一次为多个值分配多个变量:

(foo, bar, baz) = 1, 2, 3
Run Code Online (Sandbox Code Playgroud)

并且foo = 1,bar = 2,依此类推.

但是,我如何才能使变量的名称更具动态性?也就是说,

somefunction(data,tupleofnames):
    (return that each name mapped to a single datum)

somefunction((1,2,3),(foo,bar,baz))     
Run Code Online (Sandbox Code Playgroud)

并有相同的?

python destructuring mass-assignment

20
推荐指数
4
解决办法
4万
查看次数

Rails质量赋值定义和attr_accessible使用

只是想明确什么是质量分配以及如何围绕它进行编码.是质量分配许多领域的使用哈希的分配,即喜欢..

@user = User.new(params[:user])
Run Code Online (Sandbox Code Playgroud)

为了防止这种情况,你可以使用attr_accessible:

attr_accessible :name, :email
Run Code Online (Sandbox Code Playgroud)

因此,像管理员这样的字段无法通过批量分配添加?

但是我们可以通过以下方式在代码中修改它:

@user.admin = true
Run Code Online (Sandbox Code Playgroud)

那么,如果我们没有attr_accessible,那么一切都可以进行质量分配吗?

最后一个棘手的问题......是否真的即使有一个attr_accessible如"attr_accessible:name"也意味着所有其他字段现在都无法进行大规模分配?

ruby-on-rails mass-assignment

17
推荐指数
2
解决办法
4139
查看次数

嵌套表单触发'无法批量分配受保护属性警告

我有一个多层嵌套表单

User->Tasks->Prerequisites 

并以相同的形式

User->Tasks->Location

位置表单工作正常,现在我正在尝试指定当前任务的先决条件.先决条件是存储在:completed_task字段中的task_id.

当我提交表单时,我在输出中收到以下错误

WARNING: Can't mass-assign protected attributes: prerequisite_attributes

对用户中的每个任务发出一个警告.

我已经完成了与此相关的所有其他问题,确保正确引用字段名称:completed_task,

将attr_accessible添加到我的模型中(它已经存在并且我将其扩展).

我不确定我还应该做什么.

我的模特看起来像

class Task < ActiveRecord::Base
     attr_accessible :user_id, :date, :description, :location_id

     belongs_to :user
     has_one :location
     accepts_nested_attributes_for :location 
     has_many :prerequisites
     accepts_nested_attributes_for :prerequisites
end

class Prerequisite < ActiveRecord::Base
     attr_accessible :completed_task

     belongs_to :task
end

表格使用formtastic,我包括表格via

<%= f.semantic_fields_for :prerequisites do |builder3| %>
    <%= render 'prerequisite_fields', :f=>builder3 %>
<% end %>

--- _prerequisite_fields.html.erb -----
< div class="nested-fields" >
   <%= f. inputs:completed_step %>
</div>

有什么建议?

ruby-on-rails nested-forms mass-assignment

15
推荐指数
1
解决办法
6791
查看次数

为什么切割params散列会对批量分配造成安全问题?

通过批量分配来防止安全风险的官方方法是使用attr_accessible.但是,一些程序员认为这不是模型的工作(或者至少不仅仅是模型).在控制器中执行此操作的最简单方法是切换params哈希:

@user = User.update_attributes(params[:user].slice(:name))
Run Code Online (Sandbox Code Playgroud)

但是文档说明:

请注意,使用Hash#except或Hash#slice代替attr_accessible来清理属性将无法提供足够的保护.

这是为什么?为什么白名单切片的params不能提供足够的保护?

更新: Rails 4.0将发布强参数,一个精确的参数切片,所以我猜整个切片事情毕竟不是那么糟糕.

ruby security ruby-on-rails mass-assignment strong-parameters

15
推荐指数
1
解决办法
5719
查看次数