如果滿足多個條件,我試圖從下拉列表中替換一個值。我試圖用gsub方法做到這一點。具有條件的ruby gsub
場景1:如果當前選定的值是9.3.9然後值9.4.1不應該可用
場景2: 如果當前選擇的值爲9.3.10然後值9.4.1和9.4.4不應該可用
對不起,不包括代碼段。以下是我用來獲取我的RDS實例的方法。我已經使用gsub來檢查當前使用的版本是否爲9.3,並防止升級到9.4。我想將其改爲上面的場景。
def available_engine_versions(instance)
if instance.engine == RdsGeneric::RDS_TYPE_MYSQL
# This custom override for certain MySQL cases suppresses the option to upgrade to 5.6 from 5.5.
# Amazon cannot do direct updates from MySQL 5.5 to MySQL 5.6 for DBs created before 4/23/2014.
# instance.instance.created_at -> Uses Amazon's date of creation, not the one stored by ActiveRecord
if instance.nil? || instance.engine_version.start_with?('5.6.') || instance.instance.nil? || instance.instance.created_at >= Time.parse('2014-04-23')
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_MYSQL][:engine_versions]
else
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_MYSQL][:engine_versions].select{ |type| type.to_f <= 5.5 }
end
elsif instance.engine == RdsGeneric::RDS_TYPE_POSTGRES
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_POSTGRES][:engine_versions].select{ |type| type.gsub(/(\d+\.\d+).*?$/,"\\1") == instance.engine_version.gsub(/(\d+\.\d+).*?$/,"\\1") } # no upgrades from e.g. 9.3.x to 9.4.y
else
RdsConfiguration::rds_configurations[instance.engine][:engine_versions]
end
end
你如何存儲版本列表和選定的版本?需要看一些代碼來提供答案;例如,gsub是一個字符串操作符,但我希望你實際上正在檢查一個數組 –
這看起來像一個JavaScript問題。你確定你需要Ruby來做到這一點嗎? – tadman
您也可能想要將這些「版本化」排序,而不是按默認排序順序排序:'sort_by {| v | v.split.collect(&:to_i)}' – tadman