获取用户使用Devise gem创建的所有帖子

时间:2014-09-29 11:54:52

标签: sql ruby-on-rails ruby activerecord devise

我正在使用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) %>

我有两个由同一个用户发布的帖子,

Topic

但是当我尝试获取用户发布的所有帖子时,SQL命令会自动查询LIMIT为1.像这样,

SQL

因此,该视图仅提取用户发布的1个帖子。我如何获取所有帖子?

1 个答案:

答案 0 :(得分:4)

find_by_attribute将始终只返回一个结果。您需要将代码更改为:

Topic.where(user_id: @user.id)

甚至更好:

@user.topics