Я изучаю Rails всего ~ месяц, поэтому я не уверен, действительно ли ответ здесь простой или более сложный.
У меня есть две модели, назовем их «SpecialUser» и «User».
Моя модель пользователя выглядит примерно так:
class User < ActiveRecord::Base
has_one :special_user
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :roles, :user_type, :address_1, :address_2, :city, :state, :zip
(и т. д.)
И моя модель SpecialUser выглядит примерно так:
class SpecialUser < ActiveRecord::Base
belongs_to :user
(и т. д.)
Мы используем https://github.com/bernat/best_in_place, чтобы создать форму для редактирования информации для Специальный пользователь. Раньше у нас был отдельный атрибут «адрес» для SpecialUser, но недавно мы убрали его в пользу указания полного адреса (address_1, address_2, city, state, zip...) и помещения его в пользователя, чтобы обычные пользователи могли тоже есть адреса. :)
Однако, когда я пытаюсь сделать это:
<% # best_in_place_if can?(:edit, @super_user), @super_user.user, :address_1 %>
Я получаю эту ошибку:
NoMethodError in Project_professionals#show
undefined method `user_path' for #<#<Class:0x0000013457fb90>:0x00000132e1fdd8>
Я также пытался заменить @super_user.user
на User.find(@super_user.user)
и User.find(@super_user.user_id)
, но получаю точно такую же ошибку.
Когда я делаю
<%= @super_user.user.address_1 %>
Оно работает!
Прочитав материал best_in_place, я все еще не могу найти ответ. :( Не уверен, что это ограничение драгоценного камня, который мы используем, или я что-то упустил.