多站点应用程序Rails中的URL模型名称

时间:2013-04-13 22:10:16

标签: ruby-on-rails activerecord

我正在为客户在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功能,但是我们有两个同名的Pages。它在名字后面加了一个数字。例如:

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

关于如何构建这个的任何想法?

谢谢!

1 个答案:

答案 0 :(得分: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

How to get the subdomain value from a url?