0
votes

I want to create and delete reviews

In the model's review I have: user_id, spectacle_id, content and rating.

# Spectacle.rb
class Spectacle < ActiveRecord::Base
  has_many :reviews , dependent: :destroy
  has_many :users, through: :reviews
end

# User.rb
class User < ActiveRecord::Base
  has_many :reviews , dependent: :destroy
  has_many :spectacles, through: :reviews
end

# Review.rb
class Review < ActiveRecord::Base
  belongs_to :spectacle 
  belongs_to :user
end

How can I write methods create and delete?

Thank you!

Thank you very much

My preoccupation is: i want to save in model review at the same time her attributes, user_id and spectacle_id

I do something like this:

def create @user = User.find(params[:id]) @spectacle = Spectacle.find(params[:id]) @user.reviews.create(user_id: @user.id)

@spectacle.reviews.create(spectacle_id: @spectacle.id)
@review = Review.new(review_params)
if @review.save
  flash[:success] = "Review created!"
  redirect_to :root
else
  render 'home'
end

end

and i have some error on my browser:

ActiveRecord::RecordNotFound in ReviewsController#create Couldn't find User without an ID

What is wrong?

Thank you

1
You can do something like this .. User.spectacles.build(#attributes) User.spectacles.create(#attributes) read ruby on rails .. u will get this thingsp1rs

1 Answers

0
votes

You can do my_user.reviews.build(params).save or directly my_user.reviews.create(params).

To delete a review, you need to do like this my_user.reviews.where(myconditions).delete_all or my_user.reviews.where(mycondition).first.delete.

Else, directly from the spectacle it's same: my_spectacle.reviews.create(params) etc.

You can find more examples on the documentation