這是一個非常基本的任務,但我不能爲我的生活找到問題的原因。ActiveRecord'找不到方法'在簡單的一對多關係上發生異常
我正在做一個基本的待辦事項列表附加到用戶帳戶。我正在使用巫術來幫助用戶身份驗證&創建,這看起來工作正常。
問題是這樣的:
當我嘗試調用`@ user.list」以任何方式,我得到下面的異常(這是複製出來的鋼軌控制檯):
@user = User.where(:email => "[email protected]")
=> [#<User id: 1, email: "[email protected]", crypted_password: "$2a$10$tiLFyiuLGSB.UXElEdaTGerSv6/TZoLL4nVFdCNsv1AW...", salt: "e6275124385b0ea157875bba281c7ae9e3a9858e", created_at: "2011-10-02 05:59:02", updated_at: "2011-10-02 05:59:02", remember_me_token: nil, remember_me_token_expires_at: nil>]
@user.lists
NoMethodError: undefined method `lists' for #<ActiveRecord::Relation:0x007f8b6ca89748>
from /Users/<myaccount>/.rvm/gems/[email protected]/gems/activerecord- 3.1.0/lib/active_record/relation.rb:459:in `method_missing'
from (irb):4
from /Users/<myaccount>/.rvm/gems/[email protected]/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start'
from /Users/<myaccount>/.rvm/gems/[email protected]/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start'
from /Users/<myaccount>/.rvm/gems/[email protected]/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
我的代碼/ DB設置
的設置很簡單 - 我有一個User
模型和List
模型。 a List
:belongs_to :user
和User
has_many :lists
。我已經加入user_id
到lists
表以下遷移:
class AddUserIdForeignKeyToLists < ActiveRecord::Migration
def change
add_column :lists, :user_id, :integer
end
end
我已經證實,該領域user_id
在我的表(MySQL的)確實存在。
我User
模式是:
class User < ActiveRecord::Base
has_many :lists
authenticates_with_sorcery!
attr_accessible :email, :password, :password_confirmation
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_uniqueness_of :email
end
...和我的List
模型是這樣的:
class List < ActiveRecord::Base
belongs_to :user
end
從MySQL表的設計視圖如下:
users
:
lists
:
這聽起來好像有可能是有關係的問題,但我似乎無法把這個在一起。有沒有人有任何見解?我從來沒有遇到任何麻煩,就像在Linux機器上運行Rails 3.0.X一樣,但這是我第一次進入OSX的Rails 3.1,所以我不確定是否可能忽略了一個潛在的變化?
感謝您的任何指導
Rails的服務器緩存ActiveRecord的數據,你嘗試重新啓動嗎? – ryudice
@ryudice - 是的,每次更改重新啓動服務器和控制檯 - 是我的User.where子句中的一個疏忽! – Evan