Rails:从模型中获取所有布尔列并映射其名称和值

时间:2017-12-01 03:51:38

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

有没有办法可以从模型中获取所有布尔列并映射它们的值?

像(非常伪代码)的东西:

Template.columns_hash.where(type: :boolean).map(&:value)

有什么想法?或者有更简单的方法吗?

3 个答案:

答案 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)