Re: Есть ли способ заставить create () игнорировать атрибуты, которые не существуют в модели? - Нет, и это по замыслу.
Вы можете создать attr_setter, который будет использоваться create
-
attr_setter :a # will silently absorb additional parameter 'a' from the form.
Re: Как лучше всего удалить несуществующие атрибуты до создания новой записи?
Вы можете удалить их явно:
params[:Foo].delete(:a) # delete the extra param :a
Но лучше всего не ставить их туда во-первых. Измените вашу форму, чтобы пропустить их.
Добавлено:
Учитывая обновленную информацию (входящие данные), я думаю, я бы создал новый хеш:
incoming_data_array.each{|rec|
Foo.create {:a => rec['a'], :b => rec['b'], :c => rec['c']} # create new
# rec from specific
# fields
}
Добавлено больше
# Another way:
keepers = ['a', 'b', 'c'] # fields used by the Foo class.
incoming_data_array.each{|rec|
Foo.create rec.delete_if{|key, value| !keepers.include?(key)} # create new rec
} # from kept
# fields