Я в некоторой степени новичок в Rails и не могу избавиться от ощущения, что я упускаю из виду что-то глупое, но здесь все. Я создаю простую онлайн-игру, которая позволяет одному пользователю «бросать вызов» другому, и у меня есть следующие модели:
class User < ActiveRecord:Base
has_one :challenge
end
class Challenge < ActiveRecord:Base
belongs_to :user
belongs_to :target, :class_name => 'User'
end
Поля базы данных - это то, что вы ожидаете: Challenge
имеет user_id
и target_id
, User
имеет username
и некоторые поля, связанные с паролем.
Из пустой базы данных я создаю двух пользователей (которые получают идентификаторы 1 и 2) и одного Challenge
с user_id 1
и target_id 2
. Из консоли Challenge.find(1).target
возвращает пользователя 2, как и ожидалось. не ожидается, что User.find(1).challenge.target
вернет не пользователя 2, а самого Challenge
!
Само собой разумеется, я здесь потерян. Кажется, что-то это базовое должно просто работать (тм). Есть идеи?