나는 friendly_id 보석을 사용하고 있습니다. 내 경로도 중첩되어 있습니다.왜 friendly_id로 범위를 명시 적으로 지정해야합니까?
# config/routes.rb
map.resources :users do |user|
user.resources :events
end
그래서 /users/nfm/events/birthday-2009
과 같은 URL이 있습니다. 내 모델에서
, 나는 모두 nfm
및 mrmagoo
이 그들을 장타율하지 않고 이벤트를 birthday-2009
을 가질 수 있도록 이벤트 제목, 사용자 이름에 범위되어야합니다.
# app/models/event.rb
def Event < ActiveRecord::Base
has_friendly_id :title, :use_slug => true, :scope => :user
belongs_to :user
...
end
나는 또한 내 사용자 모델에서 has_friendly_id :username
을 사용하고 있습니다.
하지만, 내 컨트롤러, 난 단지 (CURRENT_USER)에 로그인 한 사용자에게 해당 이벤트를 당겨 해요 :
def EventsController < ApplicationController
def show
@event = current_user.events.find(params[:id])
end
...
end
이 작동하지 않습니다; 오류 ActiveRecord::RecordNotFound; expected scope but got none
가 표시됩니다. SO
# This works
@event = current_user.events.find(params[:id], :scope => 'nfm')
# This doesn't work, even though User has_friendly_id, so current_user.to_param _should_ return "nfm"
@event = current_user.events.find(params[:id], :scope => current_user)
# But this does work!
@event = current_user.events.find(params[:id], :scope => current_user.to_param)
, 왜 명시 적으로 지정할 필요가 수행 범위를 어쨌든 current_user.events로 제한하고있어 경우에? 그리고 current_user.to_param을 명시 적으로 호출해야하는 이유는 무엇입니까? 이 문제를 무시할 수 있습니까?