Ассоциации в Rails - PullRequest
       1

Ассоциации в Rails

0 голосов
/ 23 декабря 2010

Я новичок в Rails .. у меня есть таблица с именем users (id, name) и другая таблица, которая имеет дополнительную информацию о пользователе, называемую user_details (id, user_id, extra_info), где дополнительная_информация - это хеш.

В пользовательской модели я добавил строку

has_one :user_details

И в модели User_Detail я добавил строку

belongs_to :user
serialize :additional_details, Hash

Теперь в контроллере пользователей у меня есть действие

# set_user_empid to set the hash value empid in the additional_info column for the current_user
    def set_user_empid  
           @user1 = current_user
           @user_detail1=@user1.user_details
           @user_detail1.additional_details[:empid] = params[:value]
           @user_detail1.save
           render :text => CGI::escapeHTML(@user_detail1.additional_details[:empid].to_s)

    end 

Приведенный выше @user1.user_details показывает мне ошибку как

NameError (неинициализированная константа User :: UserDetails):

Но то же самое, если я изменю has_one на has_many, я получу фактический результат ...

Пожалуйста, дайте предложения ...

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Быстрое решение здесь состоит в том, чтобы изменить has_one :user_details на has_one :user_detail, но на самом деле вам нужно полностью избавиться от модели UserDetail и просто переместить столбец в модель User, чтобы таблица пользователей имела этистолбцы: id, name, additional_info, а затем переместите вызов на serialize в модель User.Нет реальной причины иметь отдельную таблицу только для метаданных.

1 голос
/ 23 декабря 2010

Я полагаю, поскольку вы используете множественные числа user_details, он не может его поднять.Не могли бы вы попробовать использовать has_one: user_detail

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...