我正在使用Devise来管理用户模型。
这是用户模型,user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
acts_as_voter
has_many :topics
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
这是主题模型,topic.rb
class Topic < ActiveRecord::Base
acts_as_voteable
belongs_to :user
end
创建帖子时,用户ID存储在“主题”的“user_id”列中。我想要一个用户个人资料页面,该页面应显示他所做的所有帖子。在我的用户个人资料页面视图中,我有,
<%= Topic.find_by_user_id(@user.id) %>
我有两个由同一个用户发布的帖子,
但是当我尝试获取用户发布的所有帖子时,SQL命令会自动查询LIMIT为1.像这样,
因此,该视图仅提取用户发布的1个帖子。我如何获取所有帖子?
答案 0 :(得分:4)
find_by_attribute
将始终只返回一个结果。您需要将代码更改为:
Topic.where(user_id: @user.id)
甚至更好:
@user.topics