【问题标题】:Rails4 Application ModelRails4 应用模型
【发布时间】:2014-03-21 07:20:09
【问题描述】:

我在很多模型中都使用了以下功能。我将 MongoID 用于 MongoDB 包装器

def make_slug
  self.slug = self.name.downcase.gsub(/[^a-z1-9]+/, '').chomp('')
end

在我所有的模型中复制和粘贴它是最好的放置位置。

还有关于 Rails4 的好的 Slug Gem 的推荐吗?

【问题讨论】:

  • 如果你想让 slug 创建更多用户友好的路线,我会推荐 gem friendly_id: github.com/norman/friendly_id
  • @Marcus 是否与 MongoID 兼容?
  • 创建一个超类,在里面定义这个方法并继承,有什么问题。
  • @HarshaMV 不幸的是没有(至少我不知道)。在我发表评论之前没有注意到你的更新
  • mongoid-slug 似乎得到了积极维护并且兼容 Rails 4。不过没用过。

标签: ruby-on-rails ruby-on-rails-4 models mongoid3


【解决方案1】:

所有模型都继承自 ActiveRecord,您可以打开 eigenclass 在其中添加一个单例方法并在所有模型中使用。

我将选择的方法是将它放在 lib 目录下,并在我需要的每个模型中都需要它。

【讨论】:

  • 对不起,我使用 MongoDB 和 MongoID
  • 那么我什至不确定 Mongo 包装器是否真的允许你直接包含 /lib 下的文件。在 Mongo XD 上完全没有经验
【解决方案2】:

我想你可以做一个 mixin/module,你可以在你的模型中包含你需要该功能的地方。像这样:

模块示例:

module SlugMaker
  def make_slug
    # Do your magic here
  end
end

然后将其包含在您的模型中:

class SuperAwesomeModel
  include SlugMaker

  def some_action
     make_slug
  end
end 

【讨论】:

  • 我可以把这个文件放在哪里?
  • 老实说我不知道​​,但我见过 mongoid 使用模块。我的猜测是/lib
猜你喜欢
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多