我想我錯過了一些非常明顯的東西,它讓我的大腦受傷。Rails在多個模型中查找
class User < ActiveRecord::Base
has_one :profile
class Profile < ActiveRecord::Base
has_one :user
belongs_to :team
我有一個局部循環遍歷用戶並打印一些基本信息,我在我的團隊顯示頁面中使用了這個部分。
我原本寫這個是爲了返回用戶的個人資料是團隊成員。
def show
@team = Team.find_by_id(params[:id])
@profiles= Profile.find(:all, :conditions => ['team_id = ?', @team.id])
@users = User.find_by_id(@profiles.user_id)
end
但很快意識到@profiles是一個數組,它看起來很亂。卡住我的發現應該看起來像選擇所有擁有屬於團隊成員的個人資料的用戶。
一個用來顯示用戶一起工作的其他地方看起來像一個更新的節目和關係這
<% for user in @users%>
<table>
<tr>
<td>
<%= image_tag user.profile.picture.url %>
</td>
<td>
<a href="https://stackoverflow.com/users/<%= user.id %>"><%= user.login %></a>
</td>
<td>
<%= user.profile.first_name %> <%= user.profile.second_name %>
</td>
<td>
<%= user.profile.status %>
</td>
</tr>
</table>
<% end %>
開發日誌輸出
Processing TeamsController#show (for 127.0.0.1 at 2010-03-30 22:06:31) [GET]
Parameters: {"id"=>"1"}
User Load (1.3ms) SELECT * FROM "users" WHERE ("users"."id" = 3) LIMIT 1
Team Load (1.0ms) SELECT * FROM "teams" WHERE ("teams"."id" = 1)
Rendering template within layouts/main
Rendering teams/show
Completed in 75ms (View: 11, DB: 2) | 200 OK [http://localhost/teams/1]
它似乎沒有正確選擇用戶,雖然它在我在紙上工作時似乎很有意義。添加日誌和部分 – Kelvin 2010-03-30 21:07:34
克格勃確保您的所有關聯設置正確?只要您的用戶與您的團隊相關聯,它就應該可以工作。我將添加您的表結構應該看起來像。 – 2010-03-30 21:11:29
糟糕我也忘了在User模型下添加belongs_to聲明。這也可能會造成麻煩。 :)發佈編輯來反映。 – 2010-03-30 21:23:44