如何仅显示属于某个用户的项目(使用restful authentication)?

时间:2008-10-19 20:59:29

标签: ruby-on-rails

我有一个包含用户及其文档的Web应用程序。每个用户都可以拥有许多文档:

user.rb:

has_many :documents

document.rb:

belongs_to :user

document_controller.rb:

def index
    @documents = Document.find(:all)
end

我正在使用restful_authentication插件。这是我的问题:如何让控制器只显示属于每个用户的文档?现在它显示了所有用户的所有文档。

我使用的是最新版本的Rails。

4 个答案:

答案 0 :(得分:7)

您将User类中的关系设置为Document类。这将自动向User对象添加一个方法,该方法返回与特定用户相关的所有文档的列表:

def index
  @documents = @current_user.documents
end

有关其他自动添加的方法,请参阅documentation

答案 1 :(得分:4)

试试这个:

def index
    @documents = Document.where(:user_id => current_user.id)
end

答案 2 :(得分:3)

def index
  @documents = Document.find(:all, :conditions => {:user_id => session[:user_id]})
end

答案 3 :(得分:2)

在关联加入模型部分的rails API中查看here

但请注意,Restful身份验证不会控制访问权限,以便将用户限制为仅限于自己的记录,尤其是在使用restful路由时。他们仍然可以通过在登录后在网址中输入值来查看其他用户的记录。

为此您可能需要查看Restful ACL