関連モデルの属性に外部キーでアクセスできません。
各ユーザーには多くのアプリケーションがあり、各アプリケーションは 1 つの学校に属しています
ユーザー ダッシュボード (user#show) で school_name 属性を表示しようとすると、school_name の未定義メソッド エラーが発生します。
アプリケーションには、外部キーとして機能する user_id と school_id があります。これに問題があるのではないかと思っていましたが、ドキュメントが見つかりませんでした。
@application.school_id を呼び出すと、正しい整数値が返されますが、school テーブルの関連する属性は取得できません。
どんな助けでも大歓迎です。
ユーザーコントローラー
class UsersController < ApplicationController
before_filter :authenticate_user!
def show
@user = current_user
@applications = @user.applications :include => [:school_name]
end
end
ユーザーモデル
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable
has_many :applications
has_many :editors, :through => :applications
has_and_belongs_to_many :schools
end
ユーザー/show.html.erb
<div class="hero-unit">
<center><h1> Hello <%= @user.name %></h1></center>
<%= link_to "New Application", new_application_path %>
<h2>
Current Applications
</h2>
<%@applications.each do |app|%>
<%= app.school_name %>
<%end%>
</div>
アプリケーションモデル
require 'carrierwave'
class Application < ActiveRecord::Base
mount_uploader :app_file, ImageUploader
belongs_to :user, :class_name => User, :foreign_key => "user_id"
belongs_to :school, :class_name => School, :foreign_key => "school_id"
belongs_to :editor
end