2014-01-13 28 views
0

我是RoR的新手,正在嘗試自己創建一個正在運行的版本來完成殭屍課程的rails課程後進行實驗。我目前正在遵循本教程(http://railscasts.com/episodes/250-authentication-from-scratch)嘗試從頭開始構建認證系統。我知道它是在rails 3中完成的,所以我有一些樂趣將一些事情改變爲rails 4友好。UsersController中的SyntaxError#create - @ user.save Ruby on Rails

但是,試圖創建一個用戶我得到的錯誤 「在UsersController#的SyntaxError打造」 用手一指我UsersController的8(如@ user.save)

**編輯**在/ usr /本地時/rvm/gems/[email protected]/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:377:語法錯誤,意外的'=',期待')'

錯誤是說期待')',但我有一個'='符號

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(user_params) 
    if @user.save 
     redirect_to root_url, :notice => "Signed up!" 
    else 
     render "new" 
    end 
    end 

    private 

    def user_params 
    params.require(:user).permit(:username, :email, :password, :salt, :encrypted_password) 
    end  
end 


class User < ActiveRecord::Base 

    attr_accessor :password 
    validates_presence_of :password, :on =>create # needed to move line up from below to. Cannot encrypt password without validating password 
    before_save :encrypt_password 

    validates_confirmation_of :password 
    validates_presence_of :email 
    validates_uniqueness_of :email 

    def encrypt_password 
     if password.present? 
      self.password_salt = BCrypt::Engine.generate_salt 
      self.password_hash = BCrypt::Engine.hash_secret(password, password_salt) 
     end 
    end 
end 
+0

在模型中':on => create'只是一個copy'n'paste錯誤,還是真的是這樣嗎? –

+0

:on => create是模型。需要將它移動到:encrypt_password方法之前,因爲我收到錯誤。 – megacanyon

+0

嘗試從'User'類中刪除'attr_accessor:password' ... – CDub

回答

2

你確定問題不是真的在y我們的User模型?這個:

validates_presence_of :password, :on =>create 

在語法上是有效的,但它沒有任何意義。你有一個create類方法,以便

:on => create 

是罰款就紅寶石而言,但我懷疑validates_presence_of:on選項知道如何處理什麼User.create將返回做。 validates_presence_of內部可能會有一些內容正在嘗試將:on的值視爲方法名稱或類似內容,這種情況很容易從active_support/callbacks.rb中觸發您的令人困惑和奇怪的外觀錯誤。一旦你開始使用instance_eval,module_eval和朋友,你的錯誤信息突然停止了,而Rails大量使用這些東西。

您的驗證應該是這樣的:

:on => :create 
# or 
on: :create 

所以解決這個問題先看看會發生什麼。

+0

當我進行更改時,現在當我單擊我的註冊頁面時會出現錯誤。這是一個鏈接到我的git回購如果有幫助:https://github.com/BrianLobdell/zombietwitter – megacanyon

+0

你會得到什麼錯誤? –

+0

帶有此更正的錯誤消息的副本:/Users/brianlobdell/Desktop/zombietwitter/app/models/user.rb:5:語法錯誤,意外的':',期望關鍵字結束:::create#需要移動lin。 ..^user.save在「擴展源代碼」下面列出 – megacanyon

相關問題