Spec-Zone.ru › Ruby on Rails 4.2

модуль ActiveRecord::AttributeAssignment

Публичные методы экземпляров

assign_attributes(new_attributes) Показать исходный код
# File activerecord/lib/active_record/attribute_assignment.rb, line 23
def assign_attributes(new_attributes)
  if !new_attributes.respond_to?(:stringify_keys)
    raise ArgumentError, "When assigning attributes, you must pass a hash as an argument."
  end
  return if new_attributes.blank?

  attributes                  = new_attributes.stringify_keys
  multi_parameter_attributes  = []
  nested_parameter_attributes = []

  attributes = sanitize_for_mass_assignment(attributes)

  attributes.each do |k, v|
    if k.include?("(")
      multi_parameter_attributes << [ k, v ]
    elsif v.is_a?(Hash)
      nested_parameter_attributes << [ k, v ]
    else
      _assign_attribute(k, v)
    end
  end

  assign_nested_parameter_attributes(nested_parameter_attributes) unless nested_parameter_attributes.empty?
  assign_multiparameter_attributes(multi_parameter_attributes) unless multi_parameter_attributes.empty?
end

Позволяет задать все атрибуты, передавая хеш атрибутов с ключами, соответствующими именам атрибутов (которые, в свою очередь, соответствуют именам столбцов).

Если переданный хеш отвечает методу permitted? и возвращаемое значение этого метода является false, возникает исключение ActiveModel::ForbiddenAttributesError.

cat = Cat.new(name: "Gorby", status: "yawning")
cat.attributes # =>  { "name" => "Gorby", "status" => "yawning", "created_at" => nil, "updated_at" => nil}
cat.assign_attributes(status: "sleeping")
cat.attributes # =>  { "name" => "Gorby", "status" => "sleeping", "created_at" => nil, "updated_at" => nil }

Новые атрибуты будут сохранены в базе данных при сохранении объекта.

Псевдоним для attributes=.

Также алиас: attributes=
attributes=(new_attributes)
Псевдоним для: assign_attributes

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API