def index
@customers = current_user.customers
respond_to do |format|
format.html # index.html.erb
format.json { render json: @customers }
end
end
def show
@customer = current_user.customers.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @customer }
end
end
def new
@customer = current_user.customers.new
end
这是我的CustomerController的一小部分。原点@customers
为@customers = customers
,依此类推。
我想为current_user索引/ show / new。这是有效的,但我必须手动更改所有Controller操作。
此外,我的所有自动规范文件都只是针对@customer = customers
进行测试。
这似乎不是手动更改所有这些内容的方式。
对此有更好的解决方案吗?
提前谢谢 最好的祝福 denym答案 0 :(得分:0)
Rails解决这个问题的方法是将inherited_resources gem与Responders结合使用。确切地说,您的用例在Overwriting Defaults section of inherited_resources。
中有所描述在JoséValims一书Crafting Rails Applications: Expert Practices for Everyday Rails Development中的“用响应者和生成器编写DRY控制器”一章中也讨论了这种方法。
答案 1 :(得分:0)
我认为你正在寻找一个before_filter。类似的东西:
before_filter :valid_user, only: [:index, :new, :show]
def valid_user
redirect_to root_path if current_user.nil?
end