Pergunta

Não consigo entender minha cabeça ...

class User < ActiveRecord::Base
  has_many :fantasies, :through => :fantasizings
  has_many :fantasizings, :dependent => :destroy
end

class Fantasy < ActiveRecord::Base
  has_many :users, :through => :fantasizings
  has_many :fantasizings, :dependent => :destroy
end

class Fantasizing < ActiveRecord::Base
  belongs_to :user
  belongs_to :fantasy
end

... que funciona bem para o meu relacionamento primário, naquele User posso tenho muitos Fantasies, e que um Fantasy posso pertencer para muitos Users.

No entanto, preciso adicionar outro relacionamento para gosto (como em, um User "gosta" de um Fantasy Em vez de "ter" isso ... pense no Facebook e como você pode "gostar" de um post de parede, mesmo que não "pertença" a você ... de fato, o exemplo do Facebook é quase exatamente o que eu ' estou mirando).

Concluí -me que deveria fazer outra associação, mas estou meio confuso sobre como eu poderia usá -lo, ou se essa é a abordagem certa. Comecei adicionando o seguinte:

class Fantasy < ActiveRecord::Base

  ...

  has_many :users, :through => :approvals
  has_many :approvals, :dependent => :destroy
end

class User < ActiveRecord::Base

  ...

  has_many :fantasies, :through => :approvals
  has_many :approvals, :dependent => :destroy
end

class Approval < ActiveRecord::Base
  belongs_to :user
  belongs_to :fantasy
end

... mas como faço para criar a associação através Approval em vez de passar Fantasizing?

Se alguém pudesse me deixar direto, eu seria muito obrigado!

Foi útil?

Solução

Mantenha seu primeiro conjunto de código e, no seu modelo de usuário, adicione:

has_many :approved_fantasies, :through => :fantasizings, :source => :fantasy, :conditions => "fantasizings.is_approved = 1"

Na sua tabela de fantasia, adicione um campo booleano de IS_APROVED.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top