2013-02-25 2 views
0

У меня есть модель пользователя, в которой много друзей. Я пытаюсь разбивать страницы на друзей, но я получаю такую ​​ошибку столбца. На решение, как представляется, ответят Rails, SQLException: no such column, но я просто не понимаю этого ответа.нет такой колонки: user_id error rails pagination of friends

Может кто-нибудь, пожалуйста, помогите мне объяснить, что не так, и как это исправить?

в моем 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 

ответ

0

Если кто-то сталкивается с этим вопросом, модель друга ищет user_id как ключ, который связывает две модели. вы можете установить первичный ключ в любой модели, набрав self.primary_key = 'name of column', а затем установите столбец для поиска во второй модели с помощью foreign_key=>'name of column from second model'.

0

Вы должны добавить столбец с именем user_id к столу. Для этого необходимо создать миграцию и запустить ее.

+0

Почему требуется даже столбец user_id? –

+0

"принадлежит_to: пользователь" Итак, у вас должен быть user_id столбец в друге. http://guides.rubyonrails.org/association_basics.html – AKovtunov

+0

Благодарю вас за ссылку. Исходя из этого, будет ': foreign_key =>« uid », : association_foreign_key =>« uid »' в моей модели пользователя исправить мою ошибку? Я предполагаю, что это подключает uid из модели пользователя (внешний ключ) к uid из модели моего друга (ассоциативный внешний ключ). Это правильно? –

Смежные вопросы