如果满足条件,将boolean设置为true

时间:2019-06-15 10:09:09

标签: ruby-on-rails

我有一个“任务”模型,其中包含名为“读取”的布尔参数(已读取的任务task.read = true,未读取task.read = false)和int参数“ assigned_to”(已分配的用户ID)任务)。 如果希望将与“ assigned_to”参数匹配的用户标识输入任务,则我希望“读取”为真。

task#show
        @task = Task.find(params[:id])
        @currentUser = User.find(current_user.id)
        currentUserId = @currentUser.id

        if @task.assign_to == currentUserId
            @taskIsAssignedToUser = true
        else
            @taskIsAssignedToUser = false
        end

        if @taskIsAssignedToUser && !@task.isRead?
            @task.set_read
        end

Task model:
  def set_read
    if (self.read == false)
      self.read = true
      self.save
    end
  end

 def isRead?
    if self.read?
      return true
    else
      return false
    end
  end

实际结果: 当与Assigned_to匹配的用户ID进入任务时,read不会更新为true。

1 个答案:

答案 0 :(得分:1)

您可以将代码简化为这样

@task = Task.find(params[:id])

if @task.assigned_to == current_user.id
  @task.update(read: true)
end

摆脱那些模型方法,它们毫无意义