これはかなり基本的な質問ですが、何らかの理由で私はそれを(Rails newbie) (私は適切に検索していないかもしれない)。has_many:throughアソシエーションを反復処理するときに関連付けられた結合モデルにアクセスする
だから私は基本的にhas_manyを持っています。このような関係を通じて:
<% @user.contacts.each do |c| %>
<%= c.name %>
<% end %>
:ユーザー/ show.html.erbで
class User < ApplicationRecord
has_many :contacts, through :user_contacts
class Contact < ApplicationRecord
has_many :users, through :user_contacts
私は次のように、単一のユーザーの連絡先を反復処理していますそのループの中で、私は与えられたユーザーと連絡先に関連付けられたuser_contact結合モデルにアクセスして、ユーザー< - >連絡関係が作成されたことを示すcreated_atタイムスタンプを表示したいと考えています。
私はuser_actとcontact_idでデータベース内のモデルを検索するためにUserContact.find呼び出しを行うことができますが、何とかこれは余分な感じです。これがどういう仕組みかを正しく理解していれば、私はそうでない可能性があります。与えられたユーザーとその連絡先を既にデータベースからロードしたときに、user_contactモデルが既に読み込まれているはずです。私はちょうど正しいモデルに正しくアクセスする方法を知らない。誰かが正しい構文を助けることができますか?
ありがとうございました。将来的にこの問題を抱えている人のための1つの説明として、インクルードの正しい構文は.findの前です:@user = User.includes(user_contacts:[:contact])。find(params [:id]) – Katie
Ahh、あなたが正しい。 'find'は' ActiveRecord :: Relation'を返しません。ありがとう、私はそれを修正します。 – Azolo