我正在为客户在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
关于如何构建这个的任何想法?
谢谢!
答案 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