Slug基于两个值

时间:2013-01-09 00:38:36

标签: ruby-on-rails slug

首先,我对rails和ruby非常陌生。

我正在尝试为自定义网址创建一个slug。

我有一个带有first_name&的用户模型。姓。这个模型也有一个slug。

我想要做的是检查我的数据库以查看是否有要创建的slug的实例,例如。看看有多少Joe博客存在。如果没有,则获取URL whatever.com/joe-blogs ,如果大于0,则获得计数值 whatever.com/joe-blogs-COUNT

我试图对我的slu it进行尝试时所做的事情

  def generate_slug
    NoSlug == Users.sum("slug").where(:slug => first_name-last_name.perameterize)
      if NoSlug == 0
        self.slug ||= first_name-last_name.perameterize
      else NoSlug > 0
        self.slug ||= first_name-last_name-NoSlug.perameterize
      end
  end 

我试图解决它,但没有这样的运气 - 任何建议或指示?

谢谢!

2 个答案:

答案 0 :(得分:7)

我一直在使用FriendlyId gem并且很高兴。如果要组合名字和姓氏,可以执行类似

的操作
class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :full_name, use: :slugged

  def full_name
    "#{first_name} #{last_name}"
  end
end

宝石将负责为您进行参数化。 This RailsCast也可能有所帮助。

答案 1 :(得分:0)

在模型中编写这些方法

before_validation:generate_slug

def name
    “#{first_name}#{last_name}”
结束

def generate_slug
     self.slug = self.name.downcase.gsub(/ \ s + /,' - ')。gsub(/ [^ a-zA-Z0-9 _] + /,'')
结束

相关问题