在Rails中访问链接模型的属性

时间:2011-01-29 21:17:11

标签: ruby-on-rails ruby-on-rails-3 activerecord

所以,对不起,如果这不是连贯的......我还不知道我所有的Ruby / Rails术语。

我有一个名为“Profile”的模型和一个名为“User”的模型,这两个链接如下:

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

现在,在我所做的配置文件的“索引”和“显示”视图中,我希望能够从User模型访问属性“name”。我怎样才能做到这一点?我想我在控制器中需要一些看起来像这样的东西:

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

然后在视图中访问它:

<%= @user.name %>

但那里的那段代码不起作用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

如果属性name属于个人资料模型,请在您的视图中显示:

<%= @user.profile.name %>

如果属性name属于用户模型,请停止服务器,运行rake db:migrate以确保每次迁移都已应用于您的数据库;然后运行rails consoleruby script/console以检查该属性是否适用于您的模型:

> u = User.first
> u.name

如果最后一个命令返回一个空字符串或第一个用户的名字,那么一切正常。如果你得到一个NoMethodError: undefined method,你应该检查你的数据库,因为可能缺少应该处理name属性的列。

答案 1 :(得分:0)

你的控制器应该工作。那部分是正确的。

几个问题

您的个人资料是否有user_id?

您是否运行了为Profile创建属性user_id而为User创建了profile_id的迁移?