Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何添加用户数据限制或批准_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何添加用户数据限制或批准

Ruby on rails 如何添加用户数据限制或批准,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在寻找最好的方法来建立一个我正在从事的网络项目 我的网站要求用户和非用户输入他们所在城镇的当地位置信息。我不想将此限制为仅限用户使用。我有一张表格来收集他们所在的州和城市的信息,以及他们所在位置的详细信息。我想在将此信息发布到网站之前批准此信息 处理信息的最佳方式是什么?Rails是否有一个很好的解决方案让我在发布此信息之前批准它 在显示在列表页面之前,我需要一种方法来限制数据/列表。您可以在模型中使用标志属性,最好是状态来指示它是否被批准。默认情况下,当用户添加数据时,它应该为false。

我正在寻找最好的方法来建立一个我正在从事的网络项目

我的网站要求用户和非用户输入他们所在城镇的当地位置信息。我不想将此限制为仅限用户使用。我有一张表格来收集他们所在的州和城市的信息,以及他们所在位置的详细信息。我想在将此信息发布到网站之前批准此信息

处理信息的最佳方式是什么?Rails是否有一个很好的解决方案让我在发布此信息之前批准它


在显示在列表页面之前,我需要一种方法来限制数据/列表。

您可以在模型中使用标志属性,最好是状态来指示它是否被批准。默认情况下,当用户添加数据时,它应该为false。您可以手动将其更新为true以使该数据生效

假设你正在添加一个列表,它不会出现在你的列表页面中,因为默认情况下它是未经批准的。你应该这样写你的列表控制器

@listing = Listing.where("status is not false")
您的控制器创建方法应该具有以下代码,以确保在添加列表时,默认情况下不会批准每个列表

def create
  listing.status = false
  listing.save
end
或者,您可以使用迁移并将默认值添加到status as fault。

您可以在自己的Approval controller或使用管理面板对其进行审核和更改。
.

这是一个相当普遍的问题,涉及的不仅仅是简单的Rails操作。这还取决于您所说的“批准此信息”是什么意思。作为管理员,您是否只想确保它是有效的信息(例如,用户没有在电话号码字段中键入一组随机字符),或者您是否需要实际确保信息本身是可接受的(例如,用户没有在文本框中输入一组亵渎)

对于第一部分,您可以使用来确保数据本身是可靠的(比如验证电话号码是否由数字组成)

对于第二部分,您需要跟踪信息是否应显示在您的站点上。我不知道您设置了什么数据模型,但假设用户提交的全部内容都称为
审阅

要跟踪是否应显示此审阅,您需要将
approved
属性添加到
review
模型。你可以通过一个。创建新审阅时,默认情况下,
approved
应为
false
。准备好显示此新评论后,可以将
approved
设置为
true

您可以通过一些控制器操作来完成所有这些。我假设您的个人用户帐户上有一个
admin
标志,这样您就可以批准评论了。如果是这样,您可以设置如下控制器:

class ReviewController < ActionController::Base
  def index
    if current_user.admin
      # Allow yourself to view all Reviews, presumably with an `Approve` button
      @reviews = Review.all
    else
      # Only allow standard users to see already-approved reviews
      @reviews = Review.where(approved: true)
    end

    # render reviews however you need to
  end

  def update
    @review = Review.find(params[:id])
    if params[:approved] && current_user.admin
      # You've clicked an approve button, and you are an admin
      @review.update_attribute(:approved, true)
    end

    # respond to the request here

    # Note, there are definitely cleaner ways to do this, but I wanted to
    # demonstrate where you could set the approved flag
  end
end
class ReviewController
谢谢!如果我在跟踪您,我会将用户提交的内容添加到数据库中,但要确保它们都设置为false。我制作所有设置为true的列表。然后我可以使用RailsAdmin gem来查看提交的内容。谢谢!我会查看RailsAdmin并从那里开始调整我的位置表。我相信,完成了。我对这一切都不熟悉。感谢您的意见!谢谢我所说的“批准”主要是为了确保信息与网站相关,确保它不是亵渎、机器人创建的,或者可能是恶意的。你的代码有助于树立榜样。老实说,在我还在学习的时候,我想自己用一种简单的方式来做这件事。你给我看的似乎是直截了当和基本的。谢谢,没问题!我以前使用过各种
Admin
类型的gems,但如果您正在学习,我绝对建议您从头开始编写,直到它成为第二天性。至于我个人用户上的Admin标志,我有一个名为role的子表,它在Admin下有一个布尔值。我相信这应该行得通,但是把它放在用户表上会更好吗?这取决于你认为你的应用程序会去哪里。如果将有许多不同的用户角色,并且这些不同的用户角色具有实质上不同的行为,那么拥有一个
role
表是一个很好的计划。但是,如果您只有两个角色(管理员或标准用户),那么将该标志移动到
user
表本身可能是更好的选择。