情境: 我有一个带有“Port”字段的simple_form。用户应该能够选择最低空闲端口,或覆盖此选择。所有保留的端口都保存在“port”-model中。这意味着每个不在该模型中的端口都可用。
端口模式: 范围是8080-65080。步骤是100(8080,8180,8280 ......)。
ENV:
- Rails 5
- sqlite3
- simple_forms
- html.erb
问题: 我完全不知道如何处理这项任务。我希望有一个好的提示。我整天都在网上搜索这项任务,但我没有找到任何东西。
答案 0 :(得分:1)
假设您的Port
模型的端口号有一个名为value
的整数字段,请转到port.rb
文件并创建以下方法:
def self.available_ports
unavailable_ports = Port.order(value: :asc).pluck(:value)
first_port = 8080
last_port = 65080
step = 100
all_ports = (first_port..last_port).step(step).collect { |n| n }
all_ports - unavailable_ports
end
调用Port.available_ports
,您将获得一个包含所有可用端口的阵列,其中最低端口是阵列中的第一个端口。然后,在您的表单中,将其显示给用户。