[英]CREATE AND DELETE The has_many :through Association
I want to create and delete reviews 我想创建和删除评论
In the model's review I have: user_id
, spectacle_id
, content
and rating
. 在模型的审查中,我有:
user_id
, spectacle_id
, content
和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 我的重点是:我想同时在模型审查中保存她的属性user_id和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) def创建@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 ReviewsController#create中的ActiveRecord :: RecordNotFound找不到没有ID的用户
What is wrong? 怎么了?
Thank you 谢谢
You can do my_user.reviews.build(params).save
or directly my_user.reviews.create(params)
. 您可以执行
my_user.reviews.build(params).save
或直接执行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
. 要删除评论,您需要执行以下操作
my_user.reviews.where(myconditions).delete_all
或my_user.reviews.where(mycondition).first.delete
。
Else, directly from the spectacle it's same: my_spectacle.reviews.create(params)
etc. 另外,直接从眼镜是一样的:
my_spectacle.reviews.create(params)
等。
You can find more examples on the documentation 您可以在文档中找到更多示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.