例如,我在数据库中有两个表,Users和Microposts。 Users表存储所有用户,并有两列,id和name; Microposts表存储了用户发布的帖子,并有三列:id,post_content和user_id(当然,这两个表在创建每个条目时都有时间戳)。基本上我想要的是有一个视图页面,显示存储在Users(id和name)中的信息以及相应用户创建的最后一篇文章。 我正在考虑的一种方法是在用户视图页面(例如,位于app / views / Users / index.html.erb中)处理它。因为我可能会像这样循环遍历Users表
<% @Users.each do |user| %>
id = user.id
<!-- Do such and such -->
<% end %>
在循环访问Users表时,使用user.id获取用户发布的最新帖子。
第二种方法是基本上实现这样,Users表有另一列存储最新的帖子信息,并在每次对数据库进行事务时更新。因此,当实现最新的帖子时,可以作为属性进行访问。
但是,我真的不知道哪种方式更好,也不知道如何实现这两种方式...... 有什么建议吗? 提前谢谢!
编辑: 对不起,有一个错字。它是“两个表和一个数据库”
答案 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
答案 1 :(得分: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
答案 2 :(得分:0)
您的用户有很多微博。所以在用户视图页面上执行以下操作,即app / views / Users / 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 %>