在此先感謝您的幫助!我有一個以Ruby on Rails(2.3.15,1.8.7)爲基礎的網站,可以讓人們在不同的地點創建路線,並在每個地點開展不同的活動。該網站有一種方法可確保當前用戶只能刪除與其帳戶相關的行程。在itineraries_controller.rb中執行此操作的代碼如下所示:限制訪問Ruby on Rails應用程序中的「銷燬」功能
def destroy
@itinerary = Itinerary.find(params[:id])
if @itinerary.user_id == current_user.id
@itinerary.destroy
respond_to do |format|
format.html { redirect_to('/home') }
format.xml { head :ok }
end
else
redirect_to '/'
end
end
此係統運行正常。然而,我想爲活動做同樣的事情。在activities_controller中,我想確保當前用戶只能刪除與他的賬戶相關的活動。
目前,這裏有我的四個型號(帶不必要的東西去掉了):
User.rb
class User < ActiveRecord::Base
has_many :itineraries
end
Itinerary.rb
class Itinerary < ActiveRecord::Base
has_many :locations
belongs_to :user
end
Location.rb
class Location < ActiveRecord::Base
belongs_to :itinerary
has_many :activities
end
Activ ity.rb
class Activity < ActiveRecord::Base
belongs_to :location
end
這裏是我從activities_controller.rb開始的地方。僅供參考,我的current_user.id由authenticated_system.rb創建,所以不要擔心那部分。
def destroy
@activity = Activity.find(params[:id])
if @itinerary.user_id == current_user.id
@activity.destroy
respond_to do |format|
format.html { redirect_to("/") }
format.xml { head :ok }
end
else
redirect_to '/'
end
end
我試圖使用的has_many模型連接:通過方法,但我不知道該怎麼做了三個多模式,我不知道這是正確的做法呢。再次感謝您提供的任何幫助!
解決了!謝謝,伊斯梅爾。你能告訴我這種將不同模型串起來的方法嗎?我是一個noob,但我想了解更多(並會根據你的迴應谷歌找到一些好的資源。) – KDP 2013-03-01 18:20:18
你可以做這坦克到你與belongs_to和has_many設置的關係,它們將這些方法設置爲您。你可以找到關於它的信息吃了指南 – 2013-03-01 22:53:24