#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. возраст не существует, поэтому я думаю, что его следует игнорировать при попытке создать