Задать вопрос
@Adil1

Как сделать отзывы пользователям от других пользователей?

Не могу никак третий день настроить отзывы пользователям от пользователей
Сделано следующее:

class CreateReviews < ActiveRecord::Migration
def change
create_table :reviews do |t|
t.text :content

t.timestamps
end
end
end
users_reviews

class CreateUsersReviews < ActiveRecord::Migration
def change
create_table :users_reviews do |t|
t.references :for_user, index: true
t.references :by_user, index: true

t.timestamps
end
end
end
забыл добавить review_id к Users_review

class AddReviewIdToUsersReviews < ActiveRecord::Migration
def change
add_reference :users_reviews, :review, index: true
end
end
then i create associations

class User < ActiveRecord::Base

has_many :users_review
has_many :reviews, :through => :users_review

class Review < ActiveRecord::Base
has_many :users_reviews
has_many :users, :through => :users_reviews
end

class UsersReview < ActiveRecord::Base
belongs_to :user
belongs_to :review
end
then controller

class ReviewsController < ApplicationController

def new
@user = User.find(params[:user_id])
@review = @user.reviews.new(params[:user_id])
end

def create
@user = User.find(params[:user_id])
@review = @user.reviews.build(review_params)
@review.save
redirect_to root_path
end

def show
end

def index
@user = User.find(params[:for_user_id])
@reviews = Review.all
end

private
def review_params
params.require(:review).permit(:for_user_id, :by_user_id, :content)
end

end
and my view

<%= form_for([@user, @user.reviews.build]) do |f| %>
<%= f.text_area :content, placeholder: "Your review" %>
<%= f.submit "GO", class: "btn btn-large btn-primary" %>
<% end %>
рельсы сохраняют данные в таблицу reviews но никак не хотят сохранять в join таблицу данные че делать?
  • Вопрос задан
  • 2617 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Snuff
Для has_many through ассоциации вы должны вручную создавать модель в контроллере. Либо использовать nested_attirbutes.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы