gpt4 book ai didi

ruby-on-rails - Rails——获取特定数据类型的表的所有列的名称? (#column_names 仅用于 float cols,例如。)

转载 作者:行者123 更新时间:2023-12-05 01:48:08 25 4
gpt4 key购买 nike

在rails中,我们可以这样做:

TableName.column_names

并获取一个表的所有列名称的数组作为字符串。

有什么方法可以让我以某种流线型的、类似 ruby​​ 的方式获得一个表的所有 column_names 的数字?或者所有的都是 float ?还是字符串等?

现在,我只是简单地找到我正在使用的表的所有非数字列名,并将它们作为一个数组从所有表的列名列表中减去,如下所示:

cols = TableName.column_names - ["name", "created_at", "location", ... ]

有超过一百个数字列,所以这是我目前最好的解决方案,但感觉像是 hack

最佳答案

这样就可以了:

ModelClass.columns.select{ |c| c.type == :integer }.map(&:name)

#columns 返回的列对象包含模式中存在的大部分信息,包括它们的类型、它们是否可为空或是否具有默认值等。

请注意,此列表将包括,例如,id 列和用于引用关联的任何 xyz_id 列。您可以通过检查 #primary 过滤掉 id,但是 xyz_id 列从架构的角度来看并不是“特殊的”,所以您可能必须手动将它们列入黑名单。 (如果不小心在您的列表中包含不需要的列会导致不好的事情发生,更安全的方法可能是忘记模式自省(introspection)并简单地维护您想要的列的白名单。)

关于ruby-on-rails - Rails——获取特定数据类型的表的所有列的名称? (#column_names 仅用于 float cols,例如。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17980410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com