Rails: friendly_id slug 关系

Rails: friendly_id slug relationship

我想为我的模型创建一个 slug,它依赖于相关模型的列。这可能吗?

这是我的想法:

# Example::User class
extend FriendlyId
friendly_id user.username, use: :slugged
belongs_to :user, class_name: "::User"

我收到以下错误:

NoMethodError: undefined method `username' for nil:NilClass


编辑:如何创建记录。

我有一个 UserExample::User 模型。
当运行:

User.create(email: "demo@example.com", name: "demo", password: "12345678").encrypted_password

一条Example::User条记录被自动创建:

# User class
before_action :create_example_user

has_one :example_user, class_name: "Example::User"

def create_example_user
    Example::User.create(user_id: self.id)
end

尝试这样的事情

extend FriendlyID
friendly_id user_username, use: :slugged
belongs_to :user

def user_username
  user.username
end

编辑:

因为您的示例用户试图在保存用户之前引用该用户,所以导致了错误。

改变

def create_example_user
    Example::User.create(user_id: self.id)
end

def create_example_user
    self.build_example_user
end

可能会解决问题