这是我的输入样本,它有 3 个 slug url,
["["apple-iphone"", " "blackberry"", " "htc"]"]
如何将上述 slug 转换为id
以便我可以将其用作Post.where(category_id: converted_ids)
我使用friendly_id来创建 slug url。
考虑我有两个关系
- 类别
- (类别名称将充当 slug)。
- 帖子(category_id存储为参考)。
并将其视为我的网址
http://localhost:3000/apple-iphone_htc_blackberry
现在我怎样才能找到所有posts with id of apple-iphone, htc, blackberry.
这取决于您用于生成 slug 的算法。
在您的情况下,我假设您正在对类别名称或标题应用某种转换。在这种情况下,执行从 slug 到 ID 的 1 对 1 转换可能非常困难。
您有以下几种选择:
-
更改算法以将记录的 id 与 slug 一起嵌入
def to_param "#{id}-#{name.parameterize}" end
这是最简单的方法,因为您可以按原样将 slug 传递给查找
Category.find("10-apple-iphone")
这相当于
Category.find("10")
-
如果您无法保留 id 或者您不想要(就像您所做的那样),那么最好的方法是将 slug 存储在类别记录本身中,并通过此类字段执行查找。
当然,您需要添加迁移以创建字段,def to_param slug end Category.where(slug: "apple-iphone").first
添加验证以确保两个记录不包含相同的字段,并确保在创建时生成 slug。