创建并删除has_many:通过关联

时间:2014-04-19 14:53:25

标签: ruby-on-rails ruby-on-rails-4

我想创建和删除评论

在模型的评论中,我有user_idspectacle_idcontentrating

# 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

如何编写创建和删除方法?

谢谢!

非常感谢

我的当务之急是:我希望同时保存模特评论她的属性,user_id和spectacle_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

我的浏览器出现了一些错误:

在ReviewsController #create中的ActiveRecord :: RecordNotFound 找不到没有ID的用户

有什么问题?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以my_user.reviews.build(params).save或直接my_user.reviews.create(params)

要删除评论,您需要执行此操作my_user.reviews.where(myconditions).delete_allmy_user.reviews.where(mycondition).first.delete

另外,直接来自奇观:my_spectacle.reviews.create(params)等。

您可以在documentation

上找到更多示例