Доступ к атрибуту связанной модели в Rails - PullRequest
3 голосов
/ 30 января 2011

Итак, извините, если это не встречается согласованно ... Я не знаю всей своей терминологии Ruby / Rails (пока).

У меня есть модель с именем "Профиль" и модель с именем«Пользователь, и эти два связаны так:

class Profile < ActiveRecord::Base
belongs_to :user
class User < ActiveRecord::Base
has_one :profile

Теперь, в представлениях« index »и« show »профилей, которые я создал, я хочу иметь доступ к атрибуту« name »от модели User. Как я могу это сделать? Я предполагаю, что мне понадобится что-то в контроллере, которое выглядит следующим образом:

class ProfilesController < ApplicationController
  def show
    @user = User.find(params[:user_id])

И затем получить доступ к нему в виде, подобном этому:

<%= @user.name %>

Но этот фрагмент кода тут не работает.

Спасибо за помощь.

Ответы [ 2 ]

4 голосов
/ 30 января 2011

Если атрибут name принадлежит модели Profile , на ваш взгляд:

<%= @user.profile.name %>

Если атрибут name принадлежит модели Пользователь , остановите сервер, запустите rake db:migrate, чтобы убедиться, что каждая миграция была применена к вашей базе данных; затем запустите rails console или ruby script/console, чтобы проверить, работает ли атрибут для вашей модели:

> u = User.first
> u.name

Если последняя команда возвращает пустую строку или имя вашего первого пользователя, все работает. Если вы получите NoMethodError: undefined method, вам следует проверить базу данных, поскольку столбец, который должен обрабатывать атрибут name, вероятно, отсутствует.

0 голосов
/ 30 января 2011

Ваш контроллер должен работать.Эта часть верна.

несколько вопросов

Есть ли в вашем профиле user_id?

Запустили ли вы миграцию, которая создала атрибуты user_id для Profile и profile_id для User?

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