Rails - friendly_id:我如何将friendly_id参数格式化为日期时间?

时间:2011-11-02 13:33:43

标签: ruby-on-rails datetime format friendly-id

我想将friendly_id与id中的日期时间一起使用: friendly_id:date

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

1 个答案:

答案 0 :(得分:1)

如果您在标准的created_at和updated_at上方有一个额外的列,则可以使用它来生成friendly_id。

它不能与标准的created_at列一起使用,因为这会在friendly_id回调之后填充,这意味着实际上没有创建记录。

如果你确实有一个列说{... 1}}类型的日期时间,那么你可以这样做......

report_date

或者在FriendlyId 4.x

中这样
# 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

如果使用4.x

,您只需要在模型上使用名为slug的字符串列

通过使用before_create和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 方法,您可以确保仅在创建时填充set_report_date值。

report_date的一些选项可在此处找到:https://gist.github.com/1965714

希望有所帮助。