从ruby中的对象中删除不需要的属性

我有一个对象具有来自调用db的所有属性,让我们说:

u = User.find_by_email("email@email.com") 

你有first_namelast_nameemailphone等。

如何从对象本身获取除first_namelast_name之外的所有属性,而不是通过修改对模型的调用?

 u.attributes.except("first_name", "last_name") 

选择您想要的属性可能更具前瞻性:

 u.attributes.slice('email', 'phone') 

如果您的类没有attributes方法:

 u.remove_instance_variable('@first_name') u.remove_instance_variable('@last_name') 

如果您不想修改原始对象,可以复制该对象:

 u_copy = u.dup u_copy.remove_instance_variable('@first_name') u_copy.remove_instance_variable('@last_name')