-3
@posts = Post.all

Post.all 以 Post 记录数组的形式返回当前数据库中的所有帖子,我们将这些记录存储在名为 @posts 的实例变量中。我只想获取用户的特定数据。那么我该怎么做呢?

4

3 回答 3

0

@posts = specific_user.posts.all

您需要确保帖子模型属于_用户模型并且用户模型有_许多帖子

于 2012-08-17T10:51:18.257 回答
0

首先,您需要生成迁移。

rails g migration add_user_id_to_posts user_id:integer

然后,运行rake db:migrate,使您的posts数据库表有一个user_id列。

现在,您需要修改user.rbpost.rb建模以反映关联

# app/models/post.rb
class Post < ActiveRecord::Base
  ...
  belongs_to :user
  ...
end

# app/models/user.rb
class User < ActiveRecord::Base
  ...
  has_many :posts
  ...
end

在此之后,重新启动您的 Rails 服务器。现在,您将能够像这样访问特定于用户的帖子

# Let fetch User with ID 1
user = User.find(1)
# Now, we can fetch posts related to this user like
@posts = user.posts
# Or like this
@posts = Post.where(:user_id => 1).all

我希望这很容易理解。了解Rails ActiveRecord 关联

于 2012-08-17T10:59:33.667 回答
0

如果要过滤结果,可以使用 'where' 方法。

例如,要按用户名过滤帖子,请尝试:

@posts = Posts.where(:username => "jondoe")

您还可以在 'find' 方法上使用 :conditions 符号,在这种情况下传递 SQL。

例如,要按用户名和公共标志过滤,请尝试:

@posts = Posts.all(:conditions => "username='johndoe' AND public=1")
于 2012-08-17T11:36:02.537 回答