我有一種感覺,這是一個非常基本的問題,但由於某種原因,我被它困住了(Rails新手),似乎無法找到答案(這可能是我沒有正確搜索)。迭代has_many時通過關聯訪問關聯模型:通過關聯
所以我有一個基本的has_many:通過這樣的關係:
class User < ApplicationRecord
has_many :contacts, through :user_contacts
class Contact < ApplicationRecord
has_many :users, through :user_contacts
在用戶/ show.html.erb我通過一個單一用戶的聯繫人迭代,如:
<% @user.contacts.each do |c| %>
<%= c.name %>
<% end %>
現在,在每個循環內部,我想訪問與給定用戶和聯繫人關聯的user_contact連接模型,以顯示created_at時間戳,該時間戳指示用戶何時建立了聯繫關係。
我知道我可以做一個UserContact.find調用,通過user_id和contact_id在數據庫中查找模型,但不知何故,這感覺是多餘的。如果我正確理解這是如何工作的(完全可能我不這樣做),當我從數據庫中加載給定用戶及其聯繫人時,user_contact模型應該已經加載。我只是不知道如何正確訪問正確的模型。有人可以幫助正確的語法?
謝謝,得到了這個工作。對於任何在將來遇到此問題的人來說,包含的正確語法是在.find之前:@user = User.includes(user_contacts:[:contact])。find(params [:id]) – Katie
Ahh,你是對的。 'find'不會返回'ActiveRecord :: Relation'。謝謝,我會解決它。 – Azolo