私はまだ Rails を学んでいます。何冊かの本を読んだり、codeschool.com で実践したりしました。そして今、最初の単純なアプリをゼロから作成しようとしています。
認証にdeviseを使用していますが、まだレールが苦手なので、メール確認が機能していないため、現在、テスト目的で管理者ユーザーのみがアクションを実行できます。
ここに私のモデルがあります:
[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 モデル]$
私のコントローラーでは、管理者[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'
助けていただければ幸いです。何か明確にする必要がある場合はお知らせください。
前もって感謝します。