Как "откопать" путь редактирования и / или действие в 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 ?

0 ответов

Другие вопросы по тегам