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

问题描述 投票:0回答:2

我有联系模式我想要被击败(friendly_id gem)。通过使用Contact模型所属的User模型中的user_name列。

class Contact < ApplicationRecord
  belongs_to :user

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

但是在我的rails控制台中键入Contact.find_each(&:save)我收到此错误:

NoMethodError(未定义的方法`user'for Contact(调用'Contact.connection'建立连接):Class)

如何将我的相关模型用作slug?

Rails版本:5.2.2 Friendly_id gem:5.2.4

ruby-on-rails ruby friendly-id
2个回答
1
投票

FriendlyId总是使用方法作为slug文本的基础,对于上面的问题,我认为你为user_name创建方法并在方法中调用相关字段

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end

1
投票

使用这种方式:

class Contact < ApplicationRecord
  belongs_to :user

  extend FriendlyId
  friendly_id :user_name

  def user_name
    user.user_name
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.