有条件地设置默认值

时间:2018-07-03 16:24:23

标签: ruby-on-rails ruby activerecord

我正在尝试弄清楚如何根据某些条件设置字段的默认值。

现在,无论房间中有多少人,room_type字段都默认为double

基本上,我的目标是:

def set_room_defaults
  if people_in_room.size == 1
    set room_type = "Single"
  elsif people_in_room.size == 2
    set room_type = "Double"
  elsif people_in_room.size == 3
    set room_type = "Triple"
  end
end

我一直在研究default_value_for宝石,希望能做些类似的事情:

default_value_for :room_type, (call set_room_default)

我已经了解到after_initialize可能与我要找的东西很接近?

像这样可能吗?还是我要解决所有这些错误?

谢谢

1 个答案:

答案 0 :(得分:0)

API docs

  

查找程序发现并实例化的每个对象都会触发

after_find和after_initialize回调,在实例化新对象之后也会触发after_initialize

您可以执行以下操作:

super.onCreate(savedInstanceState);
setContentView(R.layout.{your layout});

或者您可以将映射存储在class Room < ApplicationRecord after_initialize :set_room_defaults def set_room_defaults if people_in_room.size == 1 set room_type = "Single" elsif people_in_room.size == 2 set room_type = "Double" elsif people_in_room.size == 3 set room_type = "Triple" end end end 中:

Array