有没有办法可以从模型中获取所有布尔列并映射它们的值?
像(非常伪代码)的东西:
Template.columns_hash.where(type: :boolean).map(&:value)
有什么想法?或者有更简单的方法吗?
答案 0 :(得分:1)
也许这可行:
columns = Model.columns.select { |column| column.type == :boolean }.map(&:name).join ','
Model.pluck columns
要映射值,您可以使用pluck
。
它会生成如下查询:
SELECT column1, column1, column1, ... FROM "model"
答案 1 :(得分:1)
你几乎是对的。 Ruby lambdas应该是花括号。顺便说一下,这是ActiveRecord
。
Template.columns.select{ |column| column.sql_type == "boolean" }.map(&:name)
答案 2 :(得分:1)
它将按所需类型
过滤所有列名Template.columns.select{ |c| c.type == :boolean }.map(&:name)