ruby-on-rails-3 - 从后端验证和创建子域

标签 ruby-on-rails-3 subdomain

您好,我有一个应用程序,用户在其中注册并提供公司名称,我将使用该名称并创建一个子域,该子域将保存在公司表中。现在我想让它独一无二,因为我不想限制用户输入数据库中已有的相同公司名称。我希望如果公司名称已经存在,例如:输入的名称是 XYZ,因此子域将为 xyz.myapp.com,并且当任何其他用户键入相同的名称时子域名应为 xyz1.myapp.com,并且按顺序排列的其他相同名称也应相同。

这里我尝试了一些,但在第二回合失败了:

def get_available_subdomain
    generated_subdomain = name.downcase.gsub(/\s+|\&|\@|\#|\(|\)|\/|\.|\/|\?|\!|\"|\$|\%|\'|\*|\+|\,|\:|\;|\<|\>|\[|\]|\^|\`|\{|\}|\||\-|\~/, "") unless name.blank?
    companies = Company.where(:subdomain=> generated_subdomain)
    if companies.count == 0
      new_subdomain = generated_subdomain
    else
      new_subdomain = generated_subdomain + (companies.count).to_s 
    end
    new_subdomain
  end

如何制定独特的方法来获得预期的结果。任何帮助将不胜感激。

最佳答案

如果您使用 mysql 作为后端,那么您可以尝试使用此方法来搜索具有生成的 sud 域(例如“xyz”、“xyz1”、“xyz2”等)的公司。

def get_available_subdomain
    generated_subdomain = name.downcase.gsub(/\s+|\&|\@|\#|\(|\)|\/|\.|\/|\?|\!|\"|\$|\%|\'|\*|\+|\,|\:|\;|\<|\>|\[|\]|\^|\`|\{|\}|\||\-|\~/, "") unless name.blank?
    companies = Company.where('subdomain REGEXP ?', "#{generated_subdomain}[/d]*")
    if companies.count == 0
      new_subdomain = generated_subdomain
    else
      new_subdomain = generated_subdomain + (companies.count).to_s 
    end
    new_subdomain
end

如果数据库正在进步,则像这样搜索公司

companies = Company.where('subdomain ~* ?', "#{generated_subdomain}[/d]*")

如果数据库不是mysql那么我会建议搜索公司名称而不是子域。因为您正在根据公司名称创建子域。

companies = Company.where(:name => generated_subdomain)

关于ruby-on-rails-3 - 从后端验证和创建子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24299855/

相关文章:

wordpress - 位置和主题作为子域和文件夹的 SEO 影响

ruby-on-rails-3 - 运行单元测试时得到 "database does not exist error"

html - 如何根据数据库用户设置文件权限

.htaccess - 将所有子域 URL 重定向到主页

重新审视 GWT-RPC 和臭名昭著的零星 "StatusCodeException: 0"异常

javascript - 跨(子)域 AJAX POST 请求(带文件/大体)

asp.net - 子域名网站的SEO

ruby-on-rails - 设计注册 Controller 的未定义方法 `users_url'

ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type='

ruby-on-rails-3 - rspec 忽略skip_before_filter?