2011-01-29 39 views
3

所以,如果這不會一致地發生......我不知道我所有的Ruby/Rails術語(還)。在Rails中訪問鏈接模型的屬性

我有一個名爲「個人資料」和一個叫範型「用戶,這兩個鏈接是這樣的:現在

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

,在‘指數’和‘配置文件秀’的意見,我做,我希望能夠從用戶模型訪問屬性「名」我怎樣才能做到這一點我想我需要的東西的,看起來像這樣的控制器:?

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

,然後訪問它在這樣的看法:

<%= @user.name %> 

但是那裏的代碼不起作用。

感謝您的幫助。

+0

請給出關於'不工作'的更多細節。任何錯誤屏幕? – Mauricio 2011-01-29 21:37:51

回答

0

你的控制器應該工作。那部分是正確的。

幾個問題

您的個人資料是否有一個USER_ID?

您是否運行過創建屬性user_id Profile和profile_id User的遷移?

+0

'Profile'中有一個user_id屬性,但'User'中沒有profile_id屬性。應該有嗎?另外,當我檢查SQL DB時,user_id列在每個配置文件中都是空白的。那......不對。 – rottendevice 2011-01-29 21:36:12

+0

嗯..是在你實現了模型中的關係之後創建了配置文件**。 – Trip 2011-01-29 21:37:45

4

如果屬性name屬於檔案模式,在您看來:

<%= @user.profile.name %> 

如果屬性name屬於用戶模型,請停止服務器,運行rake db:migrate到確保每次遷移都已應用到您的數據庫;然後運行rails consoleruby script/console以檢查attribe正在爲你的模型:

> u = User.first 
> u.name 

如果最後一個命令返回一個空字符串或您的第一個用戶的名稱,一切工作。如果你得到一個NoMethodError: undefined method你應該檢查你的數據庫,因爲應該處理name屬性的列可能會丟失。