2013-05-28 88 views
0

例如獲得錶行,我在數據庫中,用戶和微柱的兩個表。用戶表存儲所有用戶,並具有兩列,即id和name;在微觀柱表中存儲用戶進行的職位,並有三列:ID,POST_CONTENT和USER_ID(這兩個表,當然也有被創建的每個條目的時間戳)。所以基本上我想要的是有一個視圖頁面,顯示存儲在用戶(id和名稱)加上相應的用戶創建的最後一篇文章中的信息。 一個辦法,我想這樣做的是要把它被在用戶視圖頁面(位於,例如,應用程序/視圖/用戶/ index.html.erb)正確處理。由於我可能是通過用戶表要循環這樣Ruby on Rails的兩個條件

<% @Users.each do |user| %> 
    id = user.id 
    <!-- Do such and such --> 
<% end %> 

,並同時通過用戶表循環,使用user.id來獲得用戶所做的最新帖子。

第二種方法是基本實現,使得用戶表有存儲最新的職位信息和更新,當事務對數據庫所做的每次另一列。那麼當實現最新的帖子時可以作爲屬性訪問。

不過,我真的不知道哪種方式比較好,也沒有如何實現兩種方式... 什麼建議嗎? 在此先感謝!


編輯: 對不起,有一個錯字。它是「兩個表格和一個數據庫」

+0

爲什麼使用兩個數據庫,.. !!!!! – Jyothu

+0

如果您使用的是一個DATABASE和2個TABLES,它的實現非常簡單。然後你使用表關係。 – Jyothu

+0

使用你的第一個實現。 –

回答

1

其他類似的答案,但我想添加一個重要的小片,我覺得是經常被忽視。包括第一次調用數據庫時的關聯。

# not sure the scale of your project but I would paginate @users 
# by using includes you prevent the N+1 issues 
<% @users.includes(:microposts).each do |user| %> 
    id = user.id 
    user.microposts.last 
<% end %> 

對於一些文檔,在此:
http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

+0

謝謝你的回答! – Serllen

+0

歡迎您!還應該注意的是,最好將includes()部件放入控制器中。 –

0
class User 
     has_many :microposts 
    end 

    class Micropost 
     belong_to :user 
    end 

    # to get user's post 
    # for single user 
    @user.microposts 
    # for many users 
    @users.each do |user| 
     user.microposts.each do |post| 
      post.post_content 
     end 
    end 
+0

謝謝你的回答! – Serllen

0

您的用戶有很多微博。所以做對用戶以下視圖頁面即應用程序/視圖/用戶/ index.html.erb

<% @Users.each do |user| %> 
    id = user.id 
    last_post = user.microposts.last <!-- This will give you last post created by the user --> 
<% end %> 
+0

謝謝你的回答! – Serllen