我想为我的模型创建一个slug,它取决于相关模型的列。这可能吗?
以下是我的想法:
# Example::User class
extend FriendlyId
friendly_id user.username, use: :slugged
belongs_to :user, class_name: "::User"
我收到以下错误:
NoMethodError:nil的未定义方法`username':NilClass
编辑:如何创建记录。
我有一个User
和Example::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
答案 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
可以解决问题