忽略传入的哈希中的额外键以创建

时间:2011-11-13 01:48:56

标签: ruby-on-rails ruby-on-rails-3 activerecord

rails是否提供了一种忽略传入以创建的额外键的方法。假设User有两个属性,first_name和last_name。当我做的时候

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

该行给了我一个UknonwnAttributeError。嗯,这是有道理的,它发生的原因是年龄不是其中一个属性。

但有没有办法忽略不是User?

的属性之一的键值对

2 个答案:

答案 0 :(得分:0)

我猜你可以通过将虚拟属性声明为'age'

来实现

示例:

class User < ActiveRecord::Base
  attr_accessor :age
end

答案 1 :(得分:0)

无论是相同的说法,还是

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

最终你可以覆盖用户模型的创建方法以拒绝不正常的属性,但我认为这不合适。