friendly_id - изолировать слизней в отдельной таблице

Есть ли возможность иметь слаг-поле в общей / отдельной таблице, возможно, с полиморфной ассоциацией?

Например у меня есть три модели User, Product а также Slug но поле slug отсутствует в таблице пользователей и продуктов. slug field присутствует в slugs Таблица.

Модель пользователя

class User < ActiveRercord::Base
  extend FriendlyId
  friendly_id :slug_candidates, use: [:slugged, :finders]
  has_one :slug, dependant: :destory, as: :sluggable, class_name: "FriendlyId::Slug"
end

Модель продукта:

class Product < ActiveRercord::Base
  extend FriendlyId
  friendly_id :slug_candidates, use: [:slugged, :finders]
  has_one :slug, dependant: :destory, as: :sluggable, class_name: "FriendlyId::Slug"
end

Модель слизня

module FriendlyId

  class Slug < ActiveRecord::Base

    belongs_to :sluggable, :polymorphic => true

    def to_param
      slug
    end

  end
end

Я хочу найти запись пользователя, используя содержание слагов, например

User.find ("rafiu") - чтобы получить пользователя с содержимым "rafiu"

Он должен найти пользователя, присоединившись к таблице слагов.

Есть ли способ сделать это?

0 ответов

Другие вопросы по тегам