Rails:friendly_id slug关系

时间:2017-03-26 07:18:49

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

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

以下是我的想法:

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

我收到以下错误:

  

NoMethodError:nil的未定义方法`username':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

1 个答案:

答案 0 :(得分:1)

尝试这样的事情

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

可以解决问题