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

时间:2019-03-18 22:34:29

标签: ruby-on-rails ruby friendly-id

我有想要被抛弃的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(用于联系人的未定义方法“用户”(调用   'Contact.connection'建立连接):类)

如何将我的关联模型用作子弹?

轨道版本:5.2.2 Friendly_id宝石:5.2.4

2 个答案:

答案 0 :(得分:1)

FriendlyId始终使用方法作为条形文字的基础,对于上述问题,我认为您需要为user_name创建方法并在方法内部调用相关字段

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end

答案 1 :(得分:1)

使用这种方式:

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end