В моем приложении пользователи могут следовать друг за другом. У меня есть две таблицы: users
и followers
.Модель последователей в Rails
users
id
name
followers
id
user_id
follower_id
И две модели:
class User < ActiveRecord::Base
has_many :followers
belongs_to :follower
end
class Follower < ActiveRecord::Base
belongs_to :user
end
То, что я хочу сделать, это список последователей для пользователя. например
<ul>
<% @users.each do |user| %>
<li><%= user.name %></li>
<ul>
<% user.followers.each do |follower| %>
<li><%= follower.name %></li>
<% end %>
</ul>
<% end %>
</ul>
Однако это не выглядит видеть связь ...
После обновления моей модели в соответствии с предложениями Deep, я получил это работает ... Но я не в состоянии запросить последователей и следующих пользователей.
например.
У меня есть два метода в моем UsersController:
def user_followers
@user = User.where(id: params[:id]).first
@followers = @user.get_followers
end
def user_following
@user = User.where(id: params[:id]).first
@following = @user.get_following
end
, а затем в моей модели пользователя у меня есть:
def get_followers
Follower.where(follower_id: self.id)
end
def get_following
Follower.where(user_id: self.id)
end
Какие должны быть возвращение последователей для пользователя или кто пользователь следующего , Взгляды выглядят так:
<% @followers.each do |follower| %>
<%= follower.user.name %>
<% end %>
<% @following.each do |following| %>
<%= following.user.name %>
<% end %>
Однако он возвращает только имя пользователя, которого я должен просматривать.
Модель Последователь теперь выглядит следующим образом:
class Follower < ActiveRecord::Base
belongs_to :user, foreign_key: 'follower_id', class_name: 'User'
end
этого звука больше похож на 'has_and_belongs_to_many' отношения. И к вашей проблеме: любое сообщение об ошибке? – Fallenhero
Ошибка в том, что он не может найти 'имя', потому что он не видит' follower' в качестве пользователя ... – Cameron