我已经阅读了很多关于此的内容,并且知道这里有很多相关的问题,但是我找不到关于如何对一切进行消毒的明确指南.一种选择是对插入进行清理,例如我的模型中有以下内容
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)在视图中显示数据时进行清理.我应该对每一个领域以及插入的所有观点进行消毒吗?必须在任何地方手动执行此操作似乎并不是很困难
谢谢你的帮助
我有一个大型数据集,我想在其中对记录具有重叠时间的计数求和。例如,给定数据
[
{"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 …
我发现了很多类似的问题,但没有什么能解决我的问题.基本上,我使用基础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,我用什么类来添加一些自定义文本旁边的小下拉三角形?
谢谢!
我在模板中有一个计时器,它使用 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) 我正在使用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)