1

我正在为客户在 Rails 中构建一个多站点应用程序。功能是创建新网站并管理它们。

我已经为每个网站设置了子域。前任。

site1.example.com 
site2.example.com

每个网站都有我们可以创建、编辑和销毁的页面。例子:

site1.example.com/pages/1

问题是这些网站有一些页面名称相同,例如“联系人”。所以我希望在 url 中显示页面的名称。例子:

site1.example.com/contact
site2.example.com/contact

不管是不是:

site1.example.com/pages/contact

def_param 不好,因为它在名称之前显示页面的 id。Friendly_id gem 具有 slug 功能,但我们有 2 个同名页面。它在名字后面加上一个数字。例子:

site1.example.com/pages/contact
site2.example.com/pages/contact--2

关于如何构建它的任何想法?

谢谢!

4

1 回答 1

1

validates_uniqueness_of 可以在范围参数中这样做。

class Page < ActiveRecord::Base
  validates_uniqueness_of :url, :scope => :site_id
end

http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_uniqueness_of

当然,控制器会根据子域查找页面,因此路由看起来很正常。

以防万一这是您获取子域的方式

request.subdomain

如何从 url 获取子域值?

于 2013-04-13T22:18:13.703 回答