使用另一个表的属性更改友好ID的唯一生成标题名称

Posted

技术标签:

【中文标题】使用另一个表的属性更改友好ID的唯一生成标题名称【英文标题】:Change the unique generated title names of friendly-id using attribute of another table 【发布时间】:2015-08-28 22:09:49 【问题描述】:

我有一个公司模型,并且我正在使用这样的friendly_id friendly_id :name, use: :slugged

但是由于可以有许多同名的公司(不同的分支机构)。我正在尝试使用公司地址中的城市属性来处理这种情况。

但公司地址存储在不同的表地址中。

所以 company.address.city 给了我公司所在的城市。

friendly_id :slug_candidates, use: :slugged

  # Try building a slug based on the following fields in
  # increasing order of specificity.
  def slug_candidates
    [
      :name,
      [:name, :city]
    ]
  end

我知道我可以做类似上面的事情。但是由于city不是公司的属性,我怎么能做到这一点?

更新: 可能的解决方案是创建一个帮助方法 city 返回公司所在的城市。

但问题从未如此。

我使用的friendly_id版本是4.0.10.1 并且启用 slug_candidates 的功能在版本 5 及更高版本中可用。

我尝试更新 gem。但它不会更新,因为版本 5 依赖于 activerecord 4.0,而 rails 依赖于 activerecord 3.2.13

这是一种僵局。不知道怎么办

【问题讨论】:

【参考方案1】:
class Company < ActiveRecord::Base

  .............................
  def city
    self.address.city
  end
end

【讨论】:

我相信这应该可行。但我现在面临另一个问题。并做了一点阅读,其背后的原因是因为friendly_id版本不是v5或更高版本。 让我补充一下,我无法升级friendly_id,因为我遇到了错误, In Gemfile: rails (= 3.2.13) ruby depends on activerecord (= 3.2.13) ruby friendly_id (~&gt; 5.1.0) ruby depends on activerecord (&gt;= 4.0.0) ruby 我在 Rails 4.0 上运行的另一个应用程序上尝试了这个,它工作正常

以上是关于使用另一个表的属性更改友好ID的唯一生成标题名称的主要内容,如果未能解决你的问题,请参考以下文章

jquery 在按名称属性获取值时出现问题

.NET 中数据库表的唯一 ID

JPA SequenceGenerator 和 GeneratedValue:名称/生成器属性仅每个类唯一?

“SEO 友好”网址可以包含唯一 ID 吗?

实体框架更改生成的多对多表的名称

从表中选择最新的带时间戳的值,该表对于一个列 id 有多个条目,对于每个唯一的列 id 和来自另一个表的数据