Rails:将 friendly_id/slug 与关联模型中的列一起使用

Rails: Using friendly_id/slug with column from associated model

我有 Contact 模型,我想对其进行打击 (friendly_id gem)。通过使用联系人模型所属的用户模型中的 user_name 列。

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id self.user.user_name, use: :slugged

但是在我的 rails 控制台中输入 Contact.find_each(&:save) 我得到了这个错误:

NoMethodError (undefined method `user' for Contact (call 'Contact.connection' to establish a connection):Class)

如何将关联模型用作 slug?

Rails版本:5.2.2 Friendly_id gem: 5.2.4

FriendlyId 总是使用一个方法作为 slug 文本的基础,对于你上面的问题我认为你为 user_name 创建方法并在方法

中调用相关字段
class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end

这样使用:

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end