我有一个包含用户及其文档的Web应用程序。每个用户都可以拥有许多文档:
user.rb:
has_many :documents
document.rb:
belongs_to :user
document_controller.rb:
def index
@documents = Document.find(:all)
end
我正在使用restful_authentication插件。这是我的问题:如何让控制器只显示属于每个用户的文档?现在它显示了所有用户的所有文档。
我使用的是最新版本的Rails。
答案 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