@posts = Post.all
Post.all 以 Post 记录数组的形式返回当前数据库中的所有帖子,我们将这些记录存储在名为 @posts 的实例变量中。我只想获取用户的特定数据。那么我该怎么做呢?
@posts = Post.all
Post.all 以 Post 记录数组的形式返回当前数据库中的所有帖子,我们将这些记录存储在名为 @posts 的实例变量中。我只想获取用户的特定数据。那么我该怎么做呢?
@posts = specific_user.posts.all
您需要确保帖子模型属于_用户模型并且用户模型有_许多帖子
首先,您需要生成迁移。
rails g migration add_user_id_to_posts user_id:integer
然后,运行rake db:migrate
,使您的posts
数据库表有一个user_id
列。
现在,您需要修改user.rb
和post.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 关联。
如果要过滤结果,可以使用 'where' 方法。
例如,要按用户名过滤帖子,请尝试:
@posts = Posts.where(:username => "jondoe")
您还可以在 'find' 方法上使用 :conditions 符号,在这种情况下传递 SQL。
例如,要按用户名和公共标志过滤,请尝试:
@posts = Posts.all(:conditions => "username='johndoe' AND public=1")