我的模型包含一些返回true或false的布尔列。例如is_value
有1或0。
MyModel.all
有没有办法在上面的代码行中或通过范围转换is_value
,以便将true和false转换为yes / no?
调用模型时可以吗?
答案 0 :(得分:0)
您可以在返回的记录上获取并覆盖is_value
方法。如果您只是为显示目的提取记录并且您知道is_value
不会在任何其他上下文中使用,那就没问题。
module TrueToYes
def is_value
super ? "Yes" : "No" # Assuming is_value on MyModel is a boolean
end
end
# For a collection
decorated_models = MyModel.all.map{|model| model.extend(TrueToYes) }
decorated_models.first.is_value # => 'Yes'
# Single Record
my_model = MyModel.first
my_model.is_value # => true
my_model.extend(TrueToYes)
my_model.is_value # => 'Yes'