Rails模型 - 将true更改为yes

时间:2016-05-24 09:57:21

标签: ruby-on-rails

我的模型包含一些返回true或false的布尔列。例如is_value有1或0。

MyModel.all

有没有办法在上面的代码行中或通过范围转换is_value,以便将true和false转换为yes / no?

调用模型时可以吗?

1 个答案:

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