Relacionamento: A tabela tem muitos usuários.
Estou usando "inclui" para imprimir os detalhes da tabela com os usuários associados como:
Table.includes(:users)
Mas se eu usar condições para usuários, digamos, users.active as:
Table.includes(:users).where( :users => { active: true } )
Estou pegando as tabelas com usuários que estão ativos. Isso funciona bem. Mas se uma tabela não tiver usuário ativo, ela retorna vazia. O que eu precisava era imprimir os detalhes da tabela mesmo que não houvesse nenhum usuário ativo (nesse caso, excluindo a parte do usuário). ou seja, se houver algum usuário ativo, ele deve ser impresso ao longo da tabela, caso contrário, apenas a tabela deve ser impressa. Então, escrevi um método de filtro no modelo como:
has_many :active_users, class_name: "User", :conditions => { active: 'yes'}
E, no controlador: Table.includes(:active_users)
.
Agora, para a resposta json:
render :json => { :table => @table.as_json(:include => :active_users) }
Portanto, a chave vem como "active_users".
Mas gosto de ter essa chave como "usuários" e estou preso em encontrar soluções. Alguém pode sugerir um sol, por favor.
TIA!
Substitua o Table#as_json
para incluir os usuários
def as_json(opts={})
super.merge(
users: active_users.as_json(only: [:id, :username, ...]
)
end
Eu recomendo colocar os atributos do usuário na lista de permissões para garantir que você não exponha nenhuma informação sensível.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras