through references rails many has_one has_many has_and_belongs_to_many has example belongs_to belongs and ruby-on-rails ruby-on-rails-3 has-many-through

ruby-on-rails - references - rails has_one through



rails has_many: through-¿Es posible tener condiciones en la tabla through? (2)

El enlace de Jochen tiene una buena solución, pero :conditions están en desuso y el bit :conditions => [''event_users.active = ?'',true] simplemente no parece demasiado. Prueba esto:

has_many :game_users has_many :game_likes, -> { where like: true }, class_name: ''GameUser'' has_many :liked_games, :through => :game_likes, class_name: ''Game'', :source => :game

Hay 2 modelos, y están vinculados mediante una relación has_many: aunque.

Existe el parámetro: conditions, que buscará una condición en la otra tabla modelo, pero ¿existe alguna forma de crear una condición en la tabla de unión?

Por ejemplo, supongo que tengo:

User Game GameUser

Un usuario puede tener muchos juegos, como un juego puede tener muchos usuarios. Pero quiero almacenar información adicional en la tabla conjunta, por ejemplo, si al usuario le gusta o no ese juego.

Y me gustaría tener un filtro de relación en mi modelo de usuario, algo como esto:

has_many :games, :through => ''game_users'' has_many :liked_games, :through => ''game_users'', :conditions_join => { :like => true }

¿Hay alguna manera bonita de tener esta funcionalidad?


En Rails 4 puedes hacer:

# app/models/user.rb has_many :liked_games, -> { where(like: true) }, class_name: "Game", through: :game_users, source: :game