Итак, у меня есть класс модели ruby on rails:
class Match < ApplicationRecord
belongs_to :home_player, class_name: "User", foreign_key: "home_player_user_id", optional: true
belongs_to :away_player, class_name: "User", foreign_key: "away_player_user_id", optional: true
belongs_to :winner, class_name: "User", foreign_key: "winner_user_id", optional: true
belongs_to :round
has_one :match_chat
after_create_commit :create_match_chat
def create_match_chat
MatchChat.create(
title: "Chat##{id} #{home_player.try(:userName).presence || 'Free Win'} vs. #{away_player.try(:userName).presence || 'Free Win'}",
match_id: id
)
if home_player == nil
send_result_message("We detected a free win. Setting free win user result to LOST")
update_attribute(:home_score, -2)
save
end
if away_player == nil
send_result_message("We detected a free win. Setting free win user result to LOST")
update_attribute(:away_score, -2)
save
end
generate_match_code
send_welcome_message("Welcome to your game. Please enter the code
above in order to get matched up and play your game. For
coordination please use the Chat below.")
end
def generate_match_code
update_attribute(:first_pokemon, rand(10) + 1)
update_attribute(:second_pokemon, rand(10) + 1)
update_attribute(:third_pokemon, rand(10) + 1)
end
def send_welcome_message(message)
Message.create(body: "SYSTEM: #{message}", user_id: 1, match_chat:
match_chat)
end
def send_result_message(message)
Message.create(body: "FREE WIN: #{message}", user_id: 1, match_chat:
match_chat)
end
end
При локальном тестировании в среде разработки и производства он работает совершенно нормально, и все выполняется.
Однако, когда яразвернуть это на веб-сервере (nginx + passenger), только части create_match_chat выполняются.Таким образом, MatchChat создается, но код соответствия не изменяется с помощью generate_match_code
Я пытался прочитать, но ничего не нашел, почему это может происходить.
Я использую рельсы 5.2.1 с рубином 2.5.1
Есть какие-нибудь подсказки?
ОБНОВЛЕНИЕ
match = Match.new
match.home_player_user_id = home
match.away_player_user_id = away
match.round_id = id
match.first_pokemon = first_pokemon
match.second_pokemon = second_pokemon
match.third_pokemon = third_pokemon
match.save!
Даже делать это самым ручным способом непохоже, что-то влияет ..
D, [2018-11-25T09:45:03.240848 #4994] DEBUG -- : Match Create (0.3ms) INSERT INTO "matches" ("away_player_user_id", "round_id", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["away_player_user_id", 1], ["round_id", 20], ["created_at", "2018-11-25 08:45:03.239943"], ["updated_at", "2018-11-25 08:45:03.239943"]]
Похоже, что он не использует новые запросы, но всегда очень старый.Это супер странно, и мне очень нужна помощь с этим: (