0

多くの友達を持つ User モデルがあります。友達のページネーションを行おうとしていますが、no such column エラーが表示されます。解決策はここで答えられているようですRails, SQLException: no such columnしかし、私はその答えを十分に理解していません。

誰かが間違っていることとそれを修正する方法を説明するのを手伝ってもらえますか?

私のhome.html.erbで

<div class="span8">
    <ol class="friends">
            <%= render @friends %>
        </ol>
        <%= will_paginate @friends %>
</div>

私の_friends部分で:

<li>
    <span class="friendname"><%= friend.name %></span>
    <span class="friendid"><%= friend.friendid %></span>
</li>

コントローラ

def home
    @friends = current_user.friends.paginate(page: params[:page])
end

Current_user は、sessions_helper で次のように定義されています。

def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

友人モデル

class Friend < ActiveRecord::Base
    attr_accessible :friendid, :name, :uid
    belongs_to :user
    validates :uid, presence: true
    validates :friendid, presence: true, uniqueness: true
end

ユーザーモデル

class User < ActiveRecord::Base
   attr_accessible :name, :provider, :uid
   has_many :friends, dependent: :destroy
   validates :uid, presence:true, uniqueness:true
   .
   .
   .
end
4

2 に答える 2

0

テーブルに user_id という名前の列を追加する必要があります。そのためには、移行を作成して実行する必要があります。

于 2013-02-25T20:44:26.340 に答える
0

誰かがこの質問に出くわした場合、フレンド モデルは 2 つのモデルを関連付けるキーとして user_id を探しています。を入力して任意のモデルに主キーをself.primary_key = 'name of column'設定し、次に を使用して 2 番目のモデルで検索する列を設定できますforeign_key=>'name of column from second model'

于 2013-03-03T17:59:43.437 に答える