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