小编Nom*_*man的帖子

Laravel Migrations命名大会

在命名Laravel迁移时是否应该遵循命名约定或指南,或者该名称是否只具有足够的描述性?

另外,假设您要添加12列来修改表格,那么在这种情况下,如果使用描述符,迁移名称会太长,那么是否有任何指南行要遵循?

php naming-conventions database-migration laravel

12
推荐指数
2
解决办法
6088
查看次数

`定义?`和`除非'没有按预期工作

我期待以下片段:

var = "Not Empty" unless defined? var
var # => nil
Run Code Online (Sandbox Code Playgroud)

回来"Not Empty",但我得到了nil.任何洞察为什么会发生这种情况?

ruby local-variables postfix-notation

10
推荐指数
2
解决办法
486
查看次数

带有Devise的JSON Web令牌

我希望这不算是一个固执己见的问题.我只需指向正确的方向.

我正在修改Devise宝石纯粹用JSON.我有没有问题与registration,confirmation,re-confirmation,locking到目前为止.

但是,在使用登录时,我深入挖掘并了解默认Devise登录策略使用Warden与会话和Rack身份验证相关的操作.

我理解JWT其中包含所有信息,不需要会话.

因此,如果我删除Devise所有内容的默认策略并简单地返回JWT成功和错误错误,那么这是正确的方法吗?

我错过了什么吗?

ruby rack ruby-on-rails devise jwt

10
推荐指数
3
解决办法
7100
查看次数

如何计算Liquid中的变量+1

我完全被如何计算加上一个指向变量的变量所困扰{% assign var = 0 %}.这应该是最简单的任务.这是我到目前为止所尝试的:

{% assign amount = 0 %}
{% for variant in product.variants %}
    {% assign amount = amount + 1 %}
{% endfor %}

Amount: {{ amount }}
Run Code Online (Sandbox Code Playgroud)

结果总是如此0.也许我忽视了一些显而易见的事情.也许有一个更好的方式.我想要归档的只是获取运行的迭代次数.

ruby liquid

6
推荐指数
2
解决办法
1737
查看次数

Laravel:当输入是数组时,使用验证器的有时方法

我有一个表单将structure字段作为数组发布.该structure数组包含数据库表列的定义.

$validator = Validator::make($request->all(), [
    'structure' => 'required|array|min:1',
    'structure.*.name' => 'required|regex:/^[a-z]+[a-z0-9_]+$/',
    'structure.*.type' => 'required|in:integer,decimal,string,text,date,datetime',
    'structure.*.length' => 'nullable|numeric|required_if:structure.*.type,decimal',
    'structure.*.default' => '',
    'structure.*.index' => 'required_if:is_auto_increment,false|boolean',
    'structure.*.is_nullable' => 'required_if:is_auto_increment,false|boolean',
    'structure.*.is_primary' => 'required_if:is_auto_increment,false|boolean',
    'structure.*.is_auto_increment' => 'required_if:structure.type,integer|boolean',
    'structure.*.is_unique' => 'required_if:is_auto_increment,false|boolean',
    'structure.*.decimal' => 'nullable|numeric|required_if:structure.*.type,decimal|lt:structure.*.length',
]);

Run Code Online (Sandbox Code Playgroud)

在不对所有规则进行解释的情况下,应该确保该length字段总是nulltype不存在时string或者decimal不能将长度分配给除这些类型之外的列.所以,我试图sometimes$validator实例上使用该方法.

$validator->sometimes('structure.*.length', 'in:null', function ($input) {
    // how to access the structure type here?
});
Run Code Online (Sandbox Code Playgroud)

我的问题是关闭,我该如何确保里面lengthnull只对具有数组元素type设置为比其他string …

php laravel laravel-5

6
推荐指数
1
解决办法
218
查看次数

Ruby 2.4中的Float Rounding更改

Ruby 2.4使用高斯舍入来舍入浮点数.

根据维基百科:

一个较少偏见的打破平局规则(即使原始数字为正数或负数且概率不等)也是一半甚至是一半.通过这种约定,如果y的分数是0.5,则q是最接近y的偶数.因此,例如,+ 23.5变为+24,+ 24.5也变为+24; 而-23.5变为-24,-24.5变为-24.5.

但是,在Ruby 2.4中执行以下代码会产生与预期不同的输出.

[1.5, 2.5, 3.5, 4.5, 5.5].each { | num | puts num.round }
# output:
2
3
4
5
6
# expected output(based on Gaussian rounding):
2
2
4
4
6
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样或者我错过了什么?

ruby floating-point precision gaussian

5
推荐指数
1
解决办法
309
查看次数

Rails - 根据API版本向响应添加自定义标头

我想做的很简单.Rails REST API有多个版本.所以,有一些路线,如:

http://www.example.com/v1/user.json
http://www.example.com/v2/user.json
http://www.example.com/v3/user.json 
Run Code Online (Sandbox Code Playgroud)

我想要做的是根据请求的API版本端点向响应中添加自定义http标头.

在我的config/application.rb文件中,我试过:

config.action_dispatch.default_headers.merge!('my_header_1' => 'my_value_1', 'my_header_2' => 'my_value_2')
Run Code Online (Sandbox Code Playgroud)

我也在config/routes.rb文件中尝试过这个:

scope path: "v1", controller: :test do
    get "action_1" => :action_1
    get "action_2" => :action_2
    Rails.application.config.action_dispatch.default_headers.merge!('my_header_1' => 'my_value_1', 'my_header_2' => 'my_value_2')
end
Run Code Online (Sandbox Code Playgroud)

但是,无论API版本端点如何,这两个片段都会将自定义标头附加到响应中.

我想我可以编写一个中间件来检查请求URL并根据它附加响应头,但听起来有点hackish.

有没有更好的方法来实现这一目标?最好是通过配置还是一些中心代码?

ruby rest rack ruby-on-rails http-headers

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

什么是代理对?

我在一个javascript开源项目中遇到了这段代码.

validator.isLength = function (str, min, max) 
    // match surrogate pairs in string or declare an empty array if none found in string
    var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
    // subtract the surrogate pairs string length from main string length
    var len = str.length - surrogatePairs.length;
    // now compare string length with min and max ... also make sure max is defined(in other words, max param is optional for function)
    return len >= min && (typeof max === 'undefined' || …
Run Code Online (Sandbox Code Playgroud)

javascript string encoding utf string-length

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