Я получил эти три нижних маршруты ниже, которые очень подвержены ошибкам из-за другие маршруты, объявленных обычно:Rails: половина успокоительных маршруты
# normal routes
resources :documents, :except => [:show, :edit, :update]
resources :photos, :except => [:show, :index]
...
# error-prone routes
get ":client_code" => "share#index", :as => :shares, :format => false
get ":client_code/:id" => "share#show", :as => :share, :format => false
get ":client_code/:document_id/more/:component_id" => "share#more", :as => :more, :format => false
У меня есть несколько методов в ShareController
для решения с запросами, как так:
def show
get_user_by_parameter
if get_document_by_user_or_issue and @document.is_showable? and @parameter_user == @document.user
...
end
private
def get_user_by_parameter
@parameter_user = User.where(:client_code => params[:client_code]).first
end
def get_document_by_user_or_issue
if params[:id].match(/\D/)
@document = Document.where(:user_id => @user.id, :issue => params[:id]).first
else
@document = Document.find(params[:id])
end
end
мне нужно маршруты, чтобы быть, что минимальными, но это не только некрасиво и не-RESTful, но это очень подвержены ошибкам.
:client_code
всегда будет являться владельцем наблюдаемого @document
. Это своего рода функция проверки безопасности/собственности. Но из-за всех причин, перечисленных выше: есть ли лучший способ написать это? Там должен быть лучший способ.
Спасибо.
ошибка склонна? что? – phoet