我有3个控制器:站点,用户&会话。我有所有的身份验证设置,并且在用户登录后我在应用程序控制器中设置了对象current_user。现在,我想要做的只是允许用户查看他们的站点(站点模型有:“belongs_to:user” “)。
class SitesController < ApplicationController
def index
#this was Site.all, but I changed it. Is there a better way to do this?
@sites = Site.find_all_by_user_id(current_user.id)
# respond to ... etc
end
# Now, for show, edit and update, I want to ensure the site belongs to the user. How can I add that?
def show
@site = Site.find(params[:id])
# respond to ... etc
end
如果需要更多信息(模型,整个控制器等),请告诉我,我会发布它!
谢谢!
答案 0 :(得分:2)
假设您的模型具有如下定义的关联:
class Site < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :sites
end
然后你应该可以做一个简单的事情:
current_user.sites
获取与此用户关联的所有网站
答案 1 :(得分:1)
我无法清楚地理解你的想法。但似乎你想要的是下面的东西:
def show
@site = Site.find(params[:id])
# check if the site belong to current user
redirect_to some_user_default_path if @sites.user != @current_user
# respond to ... etc
end
希望它可以提供帮助。