bou*_*uby 2 activerecord ruby-on-rails columnname
在rails中,我们可以这样做:
TableName.column_names
Run Code Online (Sandbox Code Playgroud)
并以字符串的形式获取表的所有列名称的数组。
我能以某种简化的,类似ruby的方式获取数字表的所有column_name的方法吗?还是所有的花车?或琴弦等?
现在,我只是在查找要使用的表的所有非数字列名,然后从所有表的列名列表中将它们作为数组减去,如下所示:
cols = TableName.column_names - ["name", "created_at", "location", ... ]
Run Code Online (Sandbox Code Playgroud)
有一百多个数值列,所以这是我目前最好的解决方案,但感觉像是被黑客入侵了
这将达到目的:
ModelClass.columns.select{ |c| c.type == :integer }.map(&:name)
返回的列对象#columns包含模式中存在的大多数信息,包括它们是什么类型,它们是否可为空或具有默认值等。
请注意,该列表将包括,例如,id列和xyz_id用于引用关联的任何列。您可以id通过选中进行过滤#primary,但是xyz_id从架构的角度来看,这些列并不是“特殊”的,因此您可能必须手动将其列入黑名单。(如果不小心在列表中包含不需要的列会导致发生不好的事情,那么一种更安全的方法可能是忽略模式自省,而只需维护所需列的白名单即可。)
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |