У меня есть модель под названием «Match» и модель под названием «Bet»рельсы доступа включает в себя с has_many
class Match < ActiveRecord::Base
...
has_many :bets
end
И моя модель Ставка:
class Bet < ActiveRecord::Base
attr_accessible :match_id, :user_id, :bet
...
belongs_to :match
belongs_to :user
end
Я использую следующий код выберите некоторые совпадения и ставки пользователя вместе:
@matches = Match.includes(:bets).where("bets.user_id = ? or bets.user_id is NULL", @user.id)
Как я могу получить доступ к ставкам пользователя с этим запросом?
Используя это не работает:
@matches.each do |match|
match.bet.bet
...
Как получить доступ к атрибуту ставки в игре?
Спасибо!
Попытка @sevenseacat ответ с этим кодом:
@user ||= User.find_by_id(params[:user_id]) if params[:user_id]
if @user
@matches = Match.includes(:home_team, :away_team, :bets).where("bets.user_id = ? or bets.user_id is NULL", @user.id) #.group_by{ |match| match.date.strftime("%d/%m/%y")}
@matches.each do |match|
match.bets.each do |bet|
bet.bet
end
end
end
Я изменил его match.bets.first (у меня только 1 ставка для каждого match_id и user_id поэтому он работает).
Спасибо за ваш ответ. У каждого пользователя может быть только одна ставка для матча. Есть ли способ для пользователя match.bet? –
По вашему коду, матч все еще имеет много ставок, но 'match.bets' будет содержать только правильные ставки. – sevenseacat
Этот код печатает совпадение объекта, а не ставки. '@matches.each do | match | match.bets.each do | bet | ставка.bet конец конец' –