Ruby on rails RubyonRails-如何将一个项目添加到一个有很多参考的项目中?

Ruby on rails RubyonRails-如何将一个项目添加到一个有很多参考的项目中?,ruby-on-rails,Ruby On Rails,我是RoR新手,我必须实现一个用户提交评论应用程序。问题是,我希望用户可以喜欢提交和评论,但每次提交/评论只需一次 因此,我的用户模型是(该类称为guser): 但现在我不知道如何检查引用的类型(提交或评论)以及当前用户喜欢的id 我该怎么做?在用户和提交之间需要一个单独的连接表。然后,只需点击带有用户id和提交id的“创建”操作即可 def create @like = Like.create( user_id: current_user.id, submi

我是RoR新手,我必须实现一个用户提交评论应用程序。问题是,我希望用户可以喜欢提交和评论,但每次提交/评论只需一次

因此,我的用户模型是(该类称为guser):

但现在我不知道如何检查引用的类型(提交或评论)以及当前用户喜欢的id


我该怎么做?

在用户和提交之间需要一个单独的连接表。然后,只需点击带有用户id和提交id的“创建”操作即可

  def create
    @like = Like.create(
      user_id: current_user.id,
      submission_id: params[:submission_id]
    )

    render #whatever
  end

  def destroy
    @like = current_user.likes.find_by_submission_id(params[:submission_id])
    @like.destroy!
    render :json => @like
  end

  private 
  def like_params
    params.require(:like).permit(:submission_id)
  end
在User.rb中:

has_many :likes, dependent: :destroy
在Submission.rb中:

has_many :likes
has_many :likers, through: :likes, source: :user
在Like.rb中:

belongs_to :user
belongs_to :submission
要允许提交和评论都获得喜欢,只需使你的喜欢关联多态即可


谢谢Ancharee,我发现新的Likes模型存在的问题是,我需要提交意见和评论才能获得喜欢。出于这个原因,我认为我不能使用类似的对象,因为在我的情况下,我需要有一个提交或评论的参考,这取决于类似的。。。你会怎么做?谢谢您的时间。只需使其具有多态性:)rails指南对如何做到这一点给出了很好的解释。
has_many :likes, dependent: :destroy
has_many :likes
has_many :likers, through: :likes, source: :user
belongs_to :user
belongs_to :submission