我有一张非常标准的Preferences
表。我想列出其中每条记录的所有真正的布尔值。我该怎么办呢?我知道Preference.column_names
会给我所有,但我需要每个记录的特定true
设置。任何的想法?像
@preference.column_names do |c|
c if c = true
end
谢谢!
答案 0 :(得分:3)
以下是使用属性名称和值循环对象属性的一般概念。你是否只需过滤掉布尔字段?或者所有字段都是布尔值?
@preference.attributes.each do |attr_name, attr_value|
"#{attr_name} is #{attr_value}" if attr_value == true
end
答案 1 :(得分:1)
首先你需要知道布尔列,这样的东西应该给你他们的名字:
booleans = Model.columns.select { |c| c.type == :boolean }.map(&:name)
然后,您可以使用send
根据名称提取值,并使用简单的“是true
”测试来处理其余内容:
trues = booleans.select { |name| @preference.send(name) == true }