限制模型仅在has_many中查看自己的项目

时间:2014-04-13 18:31:52

标签: ruby-on-rails rest devise

所以我正在考虑如何路由我的网站,我需要一些帮助。我有一个企业,可以在一个has_many中建造(就像在商业中创建的)建筑物(抱歉重复哈哈)。每个房产都有很多其他的东西。

我希望如此,即使会有多个建筑物,每个企业应该只能查看自己的建筑物,所以如果有人试图改变网址,它会重定向回家。

我有

resources :buildings

因此设置完毕,任何人都可以输入

主机/建筑物/不管

如果建筑物ID不属于current_business(设计),我想重定向错误,它将重定向到他们的主页。每个建筑都有一个business_id

我是否必须为此打破RESTful?

谢谢!

1 个答案:

答案 0 :(得分:2)

假设user_id资源中有builduing

<强> buildings_controller.rb

def index
 @buildings = current_user.buildings
end

def show
 @building = current_user.buildings.find(params[:id])
end

<强>建筑物/ index.html.erb

<% @buildings.each do |building| %>
  <%= building.whatever_atribute %>
<% end %>

<强>建筑物/ show.html.erb

<%= @building.whatever_atribute %>

使用上述代码,当用户转到/buildings时,他只会看到他的建筑物,如果他会去buildings/3,他会看到这栋楼,如果他拥有它,在其他情况下他会看到not found错误,您可以通过重定向或显示样式化页面对其进行自定义。