2012-12-31 49 views
1

我的Rails應用程序出現問題,我部署到Heroku。 當我做POST我的俱樂部資源,它說:在設計和Heroku的Rails 3中沒有方法錯誤

Parameters: {"utf8"=>"✓","authenticity_token"=>"MqScpac6l9MMHdPBehqfq0mTwLCCZq2dlZLVY6wt+ow=", 
"club"=> {"name"=>"Grün Weiß Club im PSV Kiel"}, "commit"=>"absenden"} 
2012-12-31T03:10:49+00:00 app[web.1]: NoMethodError (undefined method `user_id=' for # <Club:0x000000061269b0>): 
2012-12-31T03:10:49+00:00 app[web.1]: 
2012-12-31T03:10:49+00:00 app[web.1]: 
2012-12-31T03:10:49+00:00 app[web.1]: app/controllers/clubs_controller.rb:47:in `create' 

我的模型看起來是這樣的:

class Club < ActiveRecord::Base 
    default_scope :order => 'name ASC' 
    attr_accessible :name, :user_id 
    belongs_to :user 
    has_many :memberships 
    has_many :users, :through => :memberships, :order => 'name ASC' 
    validates :name, presence: true, :uniqueness => true 
end 

和控制器創建這樣的動作:

def create 
    @club = Club.new(params[:club]) 
    @club.user_id = current_user.id 
    respond_to do |format| 
    if @club.save 
     format.html { redirect_to @club, notice: 'Club was successfully created.' } 
     format.json { render json: @club, status: :created, location: @club } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @club.errors, status: :unprocessable_entity } 
    end 
    end 
end 

的認證由設計寶石完成。另外令我困惑的是,如果我在heroku上運行rails控制檯,它會說:

irb(main):001:0> Club 
=> Club(id: integer, name: string, created_at: datetime, updated_at: datetime, user_id: integer) 

所以即使是DB也應該是正確的。 感謝您的幫助!

+0

嘗試運行的'heroku運行rake db:migrate' –

+0

你是否在本地得到同樣的錯誤? –

+1

即使遷移heroku db,我今天也遇到類似問題。我做了一個「heroku重啓」,並修復了它。 –

回答

0

控制器試試這個,看看它的工作原理:

@club = current_user.clubs.build params[:club] 

,而不是

@club = Club.new(params[:club]) 
@club.user_id = current_user.id 

確保User包括has_many :clubs,然後你就可以擺脫attr_accessible :user_id

+0

我剛剛做了這個,但它沒有奏效。該俱樂部創建得當,所以沒有錯誤,但user_id根本沒有設置,它仍然是零。你有沒有給我另一個提示? –

+0

我可以看到用戶模型嗎? 'user.rb' – AJcodez

+0

當然,我粘貼它[這裏](http://pastebin.com/QfyTUytd) –