您可以在posts_controller的show動作中在會話中存儲查看的post標識數組。編輯 - 找到沒有查看過的隨機文章。未經測試,但主意在這裏:
def show_random_post
while (id == nil || (session[:viewed_posts] ||= []).include?(id)) # initialize array if it hasn't been initialized
id = rand(Post.count) + 1
end
session[:viewed_posts] << id
@post = Post.find(id)
# etc.
end
是否要保留在會話之間查看的帖子的記錄?
編輯:如果你想保持會話之間看帖子的用戶級別的記錄,你可能會想在分貝水平做到這一點。由於這意味着用戶和帖子之間存在多對多關係,因此您可能需要使用關係表來管理該關係,而在Rails中執行此操作的最佳方法是使用has_many :through。像(再次,未經測試):
class ViewedPostRecord < ActiveRecord::Base
belongs_to :user
belongs_to :post
end
class User < ActiveRecord::Base
has_many :viewed_post_records
has_many :viewed_posts, :class => 'Post', :through => :viewed_post_records
end
class PostsController < ApplicationController
def show_random_post
while (id == nil || current_user.viewed_posts.map(&:id).include?(id))
id = rand(Post.count) + 1
end
@post = Post.find(id)
current_user.viewed_posts << @post
# etc.
end
end
這將如何與許多用戶到單個帖子雖然?這種方法是否可以一次一個地顯示帖子,而不是所有帖子的列表?謝謝。 – wastedhours 2010-10-14 19:40:16