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
编辑:如何创建记录。
我有一个 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
尝试这样的事情
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
可能会解决问题
我想为我的模型创建一个 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
编辑:如何创建记录。
我有一个 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
尝试这样的事情
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
可能会解决问题