小编Dav*_*ave的帖子

在rails中清理用户输入的最佳方法

我已经阅读了很多关于此的内容,并且知道这里有很多相关的问题,但是我找不到关于如何对一切进行消毒的明确指南.一种选择是对插入进行清理,例如我的模型中有以下内容

before_validation :sanitize_content, :on => :create
def sanitize_content
  self.content = ActionController::Base.helpers.sanitize(self.content)
end
Run Code Online (Sandbox Code Playgroud)

我是否需要在每个模型的每个字段上运行它?我猜测:on =>:create也应该删除,以便在更新时运行?

另一种选择是使用simple_format或.html_safe或sanitize(fieldname)在视图中显示数据时进行清理.我应该对每一个领域以及插入的所有观点进行消毒吗?必须在任何地方手动执行此操作似乎并不是很困难

谢谢你的帮助

sanitization ruby-on-rails-4

27
推荐指数
2
解决办法
3万
查看次数

在 postgresql 中查找和总结具有重叠记录的日期范围

我有一个大型数据集,我想在其中对记录具有重叠时间的计数求和。例如,给定数据

[
  {"id": 1, "name": 'A', "start": '2018-12-10 00:00:00', "end": '2018-12-20 00:00:00', count: 34},
  {"id": 2, "name": 'B', "start": '2018-12-16 00:00:00', "end": '2018-12-27 00:00:00', count: 19},
  {"id": 3, "name": 'C', "start": '2018-12-16 00:00:00', "end": '2018-12-20 00:00:00', count: 56},
  {"id": 4, "name": 'D', "start": '2018-12-25 00:00:00', "end": '2018-12-30 00:00:00', count: 43}
]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

您可以看到有 2 个活动重叠的时期。我想根据重叠中涉及的活动返回这些“重叠”的总数。所以上面会输出类似的东西:

[
  {start:'2018-12-16', end: '2018-12-20', overlap_ids:[1,2,3], total_count: 109},
  {start:'2018-12-25', end: '2018-12-27', overlap_ids:[2,4], total_count: 62},
]
Run Code Online (Sandbox Code Playgroud)

问题是,如何通过 postgres 查询生成它?正在研究 generate_series 然后计算出每个时间间隔内有哪些活动,但这不太正确,因为数据是连续的 - 我真的需要确定确切的重叠时间,然后对重叠活动进行求和。

编辑添加了另一个示例。正如@SRack 指出的那样,由于 A、B、C 重叠,这意味着 B、CA、B …

postgresql ruby-on-rails

9
推荐指数
1
解决办法
1889
查看次数

在Foundation中使用变量和mixins

我发现了很多类似的问题,但没有什么能解决我的问题.基本上,我使用基础4.x和rails 3.x,一切都运行正常,我的application.css中包含了foundation_and_overrides.我可以修改foundation_and_overrides中的变量,一切正常.但是,我想在我的其他一个scss文件(application/global.css.scss)中使用$ primary-color变量(以及其他一些变量).如果我在我的全局css文件中使用@import"foudation_and_overrides",那么它可以工作,但它在我编译的application.css中包含整个Foundation CSS两次,这显然不太理想.

我还想在我的全局文件中使用mixins,例如@include radius().如果我使用@import"foundation/components/global",这可以工作 - 但是这也会导致重复编译CSS.我想要做的就是使用全局变量和函数,而不是CSS - 当然这是一个非常常见的事情吗?

以前(在基础之前)我只是将所有scss函数放在一个帮助文件中,并将其导入到需要它的所有其他scss文件中.

我在这里的另一个快速Q,我用什么类来添加一些自定义文本旁边的小下拉三角形?

谢谢!

ruby-on-rails zurb-foundation

3
推荐指数
1
解决办法
3090
查看次数

使用 Angular 的 $interval 服务而不触发摘要

我在模板中有一个计时器,它使用 Angular 的 $interval 服务每秒更新一次。

        var now = moment();
        var startActual = moment(scope.vm.start_actual);
        var duration = now.diff(startActual);
        timer = $interval(function(){
          duration = moment.duration(duration + 1000, 'milliseconds');
          var d = Math.abs(duration.days());
          var h = Math.abs(duration.hours());
          var m = Math.abs(duration.minutes());
          var s = Math.abs(duration.seconds());
          scope.mins = prefix + (d <= 9 ? "0"+d : d) + ':' + (h <= 9 ? "0"+h : h) + ':' + (m <= 9 ? "0"+m : m) + ':' + (s <= 9 ? …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

2
推荐指数
1
解决办法
1251
查看次数

rails/devise中的index_users_on_unlock_token唯一验证错误

我正在使用Rails 4并设计,当我尝试从我的管理控制台更新用户时遇到问题(我正在使用Rails管理员).每次我尝试更新时,都会给我一个错误:

    ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_unlock_token"
Run Code Online (Sandbox Code Playgroud)

这可能是因为大多数用户的unlock_token字段为空.但是肯定可以为null的字段仍可以编入索引吗?只有当用户被锁定在他们的帐户之外时才设置unlock_token?

我可以通过在确认令牌字段中输入随机字符串来轻松避免此问题,但这似乎是处理它的一种不好的方法.有更好的想法吗?

我的用户表定义(以及它的相关部分):

create_table "users", force: true do |t|
    t.string   "email",                                               default: "",    null: false
    t.string   "encrypted_password",                                  default: "",    null: false
    t.string   "screen_name"
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",                                       default: 0
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.string   "confirmation_token"
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
    t.integer  "failed_attempts",                                     default: 0
    t.string   "unlock_token"
    t.datetime "locked_at"
end
Run Code Online (Sandbox Code Playgroud)

我的日志错误:

  SQL (10.5ms)  UPDATE "users" SET "unlock_token" = $1, "updated_at" = $2 …
Run Code Online (Sandbox Code Playgroud)

devise ruby-on-rails-4

0
推荐指数
1
解决办法
1040
查看次数