Rails -Friendly_id:如何将Friendly_id参数设置为日期时间格式?

发布于 2024-12-13 10:14:26 字数 118 浏览 3 评论 0原文

我想使用Friendly_id和id中的日期时间,如下所示: 友好_id:日期

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

i would like to use friendly_id with a datetime in id like that :
friendly_id :date

is there a way to configure the format the parameter of friendly_id (here :date) to have change the display ? (here better than "2010-05-09 00:00:00 UTC")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懒猫 2024-12-20 10:14:26

如果您在标准的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

您所需要的只是您的上一个名为slug的字符串列模型(如果使用 4.x)

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

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

希望有帮助。

If you have an extra column above the standard created_at and updated_at, you can use it to make the friendly_id.

It won't work with the standard created_at column as this gets populated after the friendly_id callback meaning that the record isn't actually created.

If you do have a column say ... report_date with a type of datetime then you could do this ...

# 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

Or like this in 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

All you need is a string column called slug on your model if using 4.x

By using before_create and the set_report_date method, you can ensure that the report_date value is only populated once (on create).

Some options for strftime can be found here: https://gist.github.com/1965714

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文