RoR:有无限的价值吗?

时间:2014-11-13 15:03:43

标签: ruby-on-rails ruby coffeescript max infinity

我正在尝试设置max_users方法。我有两种不同的软件类型,硬件和软件,我试图将硬件设置为1,软件设置为无限制(最终用户将在表单字段中选择他们想要多少最大用户,但现在只是无限制。

非常感谢任何帮助。提前谢谢。

这是我的型号代码:

def set_max_users
  if max_users.nil?
    self.max_users = 1
  end
end

我的JS用于动态添加带有cocoon的表单字段(如果这样会有所帮助):

$ ->
  check_to_hide_add_link = ->
    max_users = parseInt($("#asset_max_users").val(), 10)
    if $("#assets_users .nested-fields").length >= max_users
      $("#assets_users .links a").hide()
    else
      $("#assets_users .links a").show()

  $("#assets_users").bind "cocoon:after-insert", ->
    check_to_hide_add_link()

  $("#assets_users").bind "cocoon:after-remove", ->
    check_to_hide_add_link()

  check_to_hide_add_link()

2 个答案:

答案 0 :(得分:4)

在这里提问并回答:How to express infinity in Ruby?

但缺点是:

Float::INFINITY

答案 1 :(得分:1)

虽然您可以在Ruby中使用Infinity,但您无法将无限值保存到DB。 作为一种变通方法,您可以将其设置为0(如果您不需要max_user等于0,否则您可以使用nil / empty值) - 因此您只需要检查是否值为0,那么它是无限的,无需检查更多/更少的其他值。它将解决另一个问题,用户无法将Infinity设置为数字字段值。

check_to_hide_add_link = ->
  max_users = parseInt($("#asset_max_users").val(), 10)
  if max_users isnt 0 and $("#assets_users .nested-fields").length >= max_users
    $("#assets_users .links a").hide()
  else
    $("#assets_users .links a").show()