Rails如何在参数内封装2个var?

时间:2018-12-07 20:08:22

标签: ruby-on-rails ruby

这似乎是一个微不足道的问题,但是在设置了一个简单的标准rails方法之后,我想将多个参数传递给一个参数,如下所示:

 def create
    @comment = @commentable.comments.new(comment_params)

    @comment.user = current_user

    Notification.create!(action: "posted", actor: current_user,
      recipient: ([@post.user, @comment.user]), notifiable: @comment)


    if @comment.save

      render json: "Commented successfully", status: 201
    else
      render json: @comment.errors, status: :unprocessable_entity
    end
  end

如果收件人刚刚收到@ post.user可以,但是,我想知道是否可以通过@ comment.user或此类声明中的其他任何变量

1 个答案:

答案 0 :(得分:3)

如果您具有正确的has_many类型关系,则可以执行以下操作:

Notification.create!(action: "posted", actor: current_user,
  recipients: [ @post.user, @comment.user ], notifiable: @comment)
)

您只需在其中传递这些内容。如果Notification和User之间没有多对多关联,则需要创建多个记录:

[ @post.user, @comment.user ].each do |user|
  Notification.create!(action: "posted", actor: current_user,
    recipient: user, notifiable: @comment)
  )
end

首选第一种方法,但需要在用户和通知之间建立适当的联接表。