2012-02-21 60 views
0

我來自Java/PHP背景,我正在嘗試學習Rails,但我發現'convention'的東西真的很棘手(這可能不會幫助我大多數時候在火車上沒有網絡訪問)。這個我真的很難過 - 我已經閱讀了關聯基礎知識指南和一些教程,但我仍然無法讓這個異常消失。試圖創建相關模型的Rails NoMethodError

型號:

class JobSeeker < ActiveRecord::Base 
    attr_accessible :fullName, :dob, :roleTagline, :expTagline, :phoneNumber, 
      :country, :email 

    belongs_to :user 
end 


class User < ActiveRecord::Base 
    attr_accessor :password 
    attr_accessible :username, :email, :password, :password_confirmation 

    # other unrelated stuff ... 

    has_one :job_seeker, :dependent => :destroy 
end 

用戶控制器:

class UsersController < ApplicationController 

def create 
    @user = User.new(params[:user]) 

    @job_seeker = @user.job_seeker.create(params[:user]) 
    if @user.save 
    sign_in @user 
    flash[:success] = "Welcome to the Sample App!" 
    redirect_to @user 
    else 
    @title = "Sign up" 
    render 'home/index' 
    end 
end 

例外:在UsersController#

NoMethodError創建

未定義的方法`創建」的零:NilClass

問題是零:NilClass,我想。這就像Rails不知道的那樣:job_seeker是一個JobSeeker或者其他的東西。我嘗試將它重命名爲陽光下的所有東西(:job_seekers,:jobSeeker等),但現在我有點迷路了。

JobSeeker的數據庫表有一個名爲user_id的整數列。

我在Windows上使用Rails 3.1。

我確定這很簡單,但我非常感謝任何幫助。非常感謝!

回答

1

has_one協會不支持create方法。使用create_association方法,即

@job_seeker = @user.create_job_seeker(params[:user]) 

PS: 我會重寫代碼中使用build而不是create避免孤立JobSeeker對象時User保存失敗。

def create 
    @user = User.new(params[:user]) 
    @job_seeker = @user.build_job_seeker(params[:user]) 
    if @user.save 

    else 

    end 
end 
+0

太棒了,完美的作品!那是在一個手冊頁的地方,以備將來參考?謝謝! – Dave 2012-02-21 20:49:10

+1

'has_one'關聯文檔可以在這裏找到:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one – 2012-02-21 21:03:24