【发布时间】:2012-05-29 11:50:29
【问题描述】:
我仍在学习 Rails,我已经阅读了一些书籍并在 codeschool.com 上进行了一些实践,现在我正在尝试从头开始编写我的第一个简单应用程序。
我正在使用 devise 进行身份验证,但由于我仍然对 Rails 有点烂,所以目前我还没有收到电子邮件确认工作,出于测试目的,只有管理员用户可以采取行动。
这是我的模型:
[loluser@fedora models]$ ls
admin.rb pet.rb user.rb
[loluser@fedora models]$ cat admin.rb
class Admin < ActiveRecord::Base
has_many :pets
devise :database_authenticatable, :registerable, :timeoutable, :validatable,
:timeout_in => 20.minutes
end
[loluser@fedora models]$ cat pet.rb
class pet < ActiveRecord::Base
belongs_to :admin
end
[loluser@fedora 模型]$
在我的控制器中,我想在索引中显示 Admin[1] 的宠物,所以我有以下代码:
class petsController < ApplicationController
before_filter :authenticate_admin!
# GET /pets
# GET /pets.xml
def index
admin=Admin.find(1)
@pets = pet.admin.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @pets }
end
end
但是,我收到此错误:
NoMethodError in petsController#index
undefined method `admin' for #<Class:0x7f2daa7b0258>
Rails.root: /home/loluser/dev/app2/devise_example
Application Trace | Framework Trace | Full Trace
app/controllers/pets_controller.rb:7:in `index'
我们将不胜感激,如果我需要澄清一些事情,请告诉我。
提前致谢。
【问题讨论】:
-
感谢您将我指向 @pets = admin.pets.all 但现在我收到错误 ActiveRecord::StatementInvalid in PetsController#index SQLite3::SQLException: no such column: pets.admin_id: SELECT "pets".* FROM "pets" WHERE ("pets".admin_id = 1) Rails.root: /home/heptagone/dev/app2/devise_example 应用程序跟踪 |框架跟踪 | Full Trace app/controllers/pets_controller.rb:7:in `index' 我已经完成了命令“bundle exec rake:db migrate”,所以我认为 admin_id 已经是宠物的一部分,因为你可以在我的模型中看到我的模型原帖
标签: ruby-on-rails activerecord devise