Я использую Rails 4, и мне трудно понять, как настроить мои модели, чтобы один пользователь мог оставить отзыв для другого пользователя.Rails: отзывы пользователей от других пользователей
Я пытался следовать ответ на прикрепленном вопрос: rails 4 users reviews for users how to do this
Мои модели: Пользователь, профиль, Обратная связь
Ассоциации между моделями являются:
User.rb
has_one :profile
has_many :feedbacks
accepts_nested_attributes_for :feedbacks
Profile.rb: belongs_to :user
Feedback.rb:
belongs_to :user
has_one :reviewer, :class_name => 'User', :foreign_key => 'reviewer'
таблица обратной связи имеет атрибуты, называемые: comment (text),: reviewer (integer) и: created_at (datetime). Рецензент должен быть идентификатором пользователя, который оставил обратную связь.
Модель пользователя имеет атрибуты для: first_name и: last_name.
В моей шоу странице профиля, у меня есть ссылка на обратную связь частичной:
<%= render "feedbacks/feed" %>
Это частичное то есть:
<div class="containerfluid">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<% if can? :read, @feedback && @user.feedback.comment.!blank %>
<%= @profile.user.feedbacks.each do |feedback|%>
<div class="row">
<div class="col-md-10 col-md-offset-1">
<%= @feedback.comment %>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="logobox">
<%= "#{@user.feedback.reviewer.first_name} #{@user.feedback.reviewer.last_name}" %>
</div>
</div>
<div class="col-md-3">
<div class="logobox">
<%= @feedback.try(:created_at).try(:strftime, '%d %B %Y') %>
</div>
</div>
<% end %>
<% else %>
<%= render html: "No feedback available".html_safe %>
</div>
<% end %>
</div>
</div>
</div>
То, что я хочу от выше, чтобы отобразить обратную связь любой пользователь, который может читать отзывы на странице профиля пользователя (получать обратную связь). Если обратной связи нет, или current_user не может просмотреть обратную связь, тогда следует применить оператор else.
У меня есть несколько проблем с вышеупомянутым:
Я не знаю, как пройти модели для установления связи с обратной связью. Частичная обратная связь отображается на странице просмотра профиля. Обратная связь принадлежит пользователю и профилю принадлежит пользователю.
Я получаю сообщение об ошибке, указывающей на первую строку выше (будучи <% если могут: читать, @feedback & & user.feedback.comment пустым%> Ошибка говорит, что ждет.!?. 'then' .Я никогда не использовал «тогда» раньше, и это не работает, когда я просто печатаю его после пробела.
У меня есть целочисленный атрибут в моей таблице отзывов: рецензент. Я хочу сохранить пользователя id пользователя, который создал обратную связь (на другом пользователе) в этом поле.Я не знаю, как это сделать. Сообщение SO, скопированное выше, предлагает ввести строку в мою модель обратной связи, в которой говорится: has_one: reviewer,: class_name => 'User',: foreign_key => 'reviewer'. Я пробовал это, но я не может понять, что он делает.
Может ли кто-нибудь помочь? Возможно, есть еще один способ подойти к этой проблеме, и я был бы признателен за помощь в ее поиске. Сообщение SO, которое мне удалось найти, было проголосовано слишком широко, но я не могу найти никаких других ссылок с более конкретными аспектами этой проблемы.
Спасибо - плохо дайте ему попробовать и дайте вам знать – Mel