Как я могу указать Ruby (Rails) игнорировать защищенные переменные, которые присутствуют при назначении массы?Ruby - игнорировать защищенные атрибуты
class MyClass < ActiveRecord::Base
attr_accessible :name, :age
end
Теперь я массово назначить хэш для создания нового MyClass
.
MyClass.create!({:name => "John", :age => 25, :id => 2})
Это даст мне исключение:
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: id
Я хочу, чтобы создать новый MyClass
с указанным (незащищенный) атрибуты и игнорировать атрибут id
.
С другой стороны: как я могу игнорировать неизвестные атрибуты. Например, MyClass
не имеет атрибута location
. Если я попытаюсь назначить его массой, просто проигнорируйте его.
Итак? В этом весь смысл. Вы принимаете только переменные, о которых вы * знаете. Переменные, о которых вы не знаете, - это то, что вы когда-то убирали, вы вырезаете и используете те, о которых вы * знаете. – meagar
Да, вам нужно подумать о том, что вы обновляете/создаете, когда назначаете вещи. В этом и заключается причина, по которой Rails по умолчанию включила защиту массового присвоения. Это решение только назначает переменные, которые вы определяете, которые должны быть такими, какие вы хотите. –
@MichaelPapile Вправо. Как я могу получить незащищенные атрибуты для определенного класса? –