1

我想在 id 中使用friendly_id 和日期时间:friendly_id :date

有没有办法配置friendly_id参数的格式(这里:日期)来改变显示?(这里比“2010-05-09 00:00:00 UTC”更好)

4

1 回答 1

1

如果您在标准 created_at 和 updated_at 之上有一个额外的列,您可以使用它来制作friendly_id。

它不适用于标准 created_at 列,因为它是在friendly_id 回调之后填充的,这意味着实际上并未创建记录。

如果您确实有一个专栏说...report_date带有日期时间类型,那么您可以这样做...

# app/models/report.rb  ## using friendly_id 3.x
class Report < ActiveRecord::Base
  # I recommend using a cache column as well.
  has_friendly_id :report_slug, :use_slug => true, :cache_column => 'cached_slug'
  before_create :set_report_date

  def set_report_date
    self.report_date = Time.now
  end

  def report_slug
    report_date.strftime('%d-%m-%Y')
  end
end

或者在 FriendlyId 4.x 中这样

class Home < ActiveRecord::Base
  extend FriendlyId
  friendly_id :report_slug, :use => :sluggable
  before_create :set_report_date

  def set_report_date
    self.report_date = Time.now
  end

  def report_slug
    report_date.strftime('%d-%m-%Y')
  end
end

如果使用 4.x,您只需要在模型上添加一个名为 slug 的字符串列

通过使用 before_create 和该set_report_date方法,您可以确保该report_date值仅填充一次(在创建时)。

strftime可以在这里找到一些选项: https ://gist.github.com/1965714

希望有帮助。

于 2012-03-03T12:14:56.627 回答