Como posso escopo Atos_as_taggable_on_stereoids por conta?
-
22-09-2019 - |
Pergunta
Se eu tiver meu site logicamente dividido em contas (por exemplo, acme.mywebsite.com, xyz.mywebsite.com), como posso implementar ACT-AS TAGGABLE-STERÓIDES E as tags escovadas pela conta corrente?
Para dar pouco mais detalhes, se estou acessando Acme, não quero ver tags do subdomínio XYZ.
Eu olhei para o ato como tocável, mas o contexto Somente é fornecido se você deseja ter diferentes classes de tags para o mesmo modelo.
Solução
Supondo que eu entendi sua pergunta, pois você tem várias contas, cada uma com seu próprio conjunto de tags que poderiam ser aplicadas a qualquer modelo em seu aplicativo que chama Acts_as_taggable. O seguinte deve fazer o que você deseja.
Você pode adicionar o seguinte ao controlador de aplicativos para tornar o subdomínio acessível a todas as ações.
class ApplicationController < ActionController::Base
before_filter :getSubdomain
def getSubdomain
@current_subdomain.(self.request.subdomains[0])
end
end
Supondo que você vincule uma tag a um subdomínio de alguma forma como no seu banco de dados, você pode criar um escopo nomeado. Este exemplo pressupõe que o subdomínio seja um nome de usuário e seu modelo de marcação pertence a um usuário, você pode usar um escopo nomeado no seu modelo de tag para selecionar apenas os relevantes para o subdomínio.
class Tag < ActiveRecord::Base
...
named_scope :find_by_subdomain, labmda do |subdomain|
{ :joins => "users ON users.id = tags.user_id", :conditions => ["users.name = ?", subdomain] }
end
end
Em seguida, recuperar tags em postagens criadas pelo usuário associado ao subdomínio:Posts.tags.find_by_subdomain(@subdomain)
NB: Você precisará aumentar o modelo de tag fornecido pelos atos como tocáveis-esteróides para adicionar o seguinte. - Uma coluna vinculando cada tag a uma conta. - A validação de singularidade para escopo por conta. Permitindo que várias contas tenham as mesmas tags.
Outras dicas
Se a conta for um modelo para você, você poderá definir a conta do objeto marcado como o proprietário. Documentação: https://github.com/mbleigh/acts-as-taggable-on#tag-ownership
E depois peça uma conta para marcar o objeto. Em seguida, para encontrar todas as tags, você pode pedir ao proprietário que obtenha tags ou taggings AL.