Как "откопать" путь редактирования и / или действие в Rails 3?
В настоящее время я работаю над простым веб-приложением Rails 3 с devise. Когда пользователи регистрируются Account
создано. В этом суть модели Account:
class Account < ActiveRecord::Base
include Authority::UserAbilities
# Callbacks
after_create do |account|
account.create_person
account.add_role :owner, account.person
end
has_one :person, dependent: :destroy
end
А суть модели Person:
class Person < ActiveRecord::Base
belongs_to :account
default_scope where(published: true)
end
Как вы можете видеть, человек (который в основном является профилем пользователя) создается после создания учетной записи, значение по умолчанию published
является false
, После регистрации пользователь входит в систему и перенаправляется на домашнюю страницу, которая содержит edit_person_path(current_account.person)
,
После настройки default_scope
для человека Routing Error: No route matches {:action=>"edit", :controller=>"people", :id=>nil}
был брошен из-за edit_person_path(current_account.person)
,
Моим решением этого было изменить edit_person_path(current_account.person)
в edit_person_path(Person.unscoped { current_account.person} )
,
Проблема, с которой я столкнулся сейчас, заключается в том, что, хотя страница отображается нормально, когда я нажимаю на ссылку редактирования, возникает следующее исключение:
ActiveRecord::RecordNotFound in PeopleController#edit
Couldn't find Person with id=126 [WHERE "people"."published" = 't']
Каков наилучший способ временно снять область действия редактирования, если я сделаю это в PeopleController#edit
?