У меня есть две модели:Rails: присоединение к 'HAS_ONE' и "belongs_to ассоциация
class User < ActiveRecord::Base
has_one :user_profile
end
class UserProfile < ActiveRecord::Base
belongs_to :user
end
User
имеет один UserProfile
, а UserProfile
принадлежит User
Таблицах структурой:
id: integer имя: строка электронная почта: строка
UserProfile
ID: целое user_id: целое био: строка BLOG_URL: строка
Использование рельсов консоли, я стараюсь, чтобы получить информацию Пользователя путем объединения обеих таблиц:
User.joins(:user_profile).includes(:user_profile).where(user_profiles: {user_id: 1})
Результат на экране консоли показывает мне только таблицу User, таблица UserProfile не отображается.
=> [#<User id: 1, name: "Alan", email:"[email protected]">]
SQL-оператор, который появился на экране консоли (выбранный «пользователи». «Ид» бла-бла ...) кажется правильным, так как, когда я скопировать и вставить его в SQLite браузер и выполнить команду, это показывает мне результат, как я ожидал.
|id| name | email | id | user_id | bio | blog_url |
------------------------------------------------------------------------------
|1 | Alan | [email protected] | 1 | 1 | lorem ipsum | alan.example.com |
Так что я нашел здесь два разных результата.
Что может привести к тому, что эти таблицы не присоединятся к моей консоли?
Понял. Поэтому, когда мне нужно отобразить значение из связанного объекта, мне, возможно, придется использовать что-то вроде 'user.user_profile.blog_url'. – Abednego
точно. это отдельные объекты, которые имеют различный набор атрибутов, которые отображаются через соответствующие методы для этих объектов. – keymone