Игнорирование дополнительных ключей в хэше, переданном для создания

#ruby-on-rails #ruby-on-rails-3 #activerecord

#ruby-on-rails #ruby-on-rails-3 #activerecord

Вопрос:

Предоставляет ли rails способ игнорировать дополнительные ключи, которые передаются для создания. Предполагаемый пользователь имеет два атрибута: first_name и last_name. Когда я делаю

 User.create({ :first_name => "first", :last_name => "last", :age => 10})
  

эта строка выдает мне ошибку UknonwnAttributeError. Что ж, это имеет смысл, это происходит потому, что возраст не является одним из атрибутов.

Но есть ли способ просто игнорировать пару ключ-значение, которая не является одним из атрибутов для User?

Ответ №1:

Либо то, что сказал sameera207, либо

 hash.keep_if { |k,v| User.attribute_names.include?(k.to_s) }
  

В конечном счете, вы могли бы переопределить метод create вашей пользовательской модели, чтобы отклонить недействующие атрибуты, но я думаю, что это не подходит.

Ответ №2:

Я думаю, вы могли бы сделать это, объявив виртуальный атрибут как ‘age’

Пример:

 class User < ActiveRecord::Base
  attr_accessor :age
end
  

Комментарии:

1. возраст не существует, поэтому я думаю, что его следует игнорировать при попытке создать