小编Luc*_*ain的帖子

"验证"和"验证"之间有什么区别?

我使用以下方法为对象添加了验证:

validate :field, presence: true
Run Code Online (Sandbox Code Playgroud)

我发现他们没有给出错误信息.我将它们更改为validates并收到错误消息.这张票是相关的.

我尝试添加自定义验证validates并收到错误:

You need to supply at least one validation
Run Code Online (Sandbox Code Playgroud)

我把它改成了validate,一切都按预期进行了.

我的理解是使用validates普通验证和validate自定义验证.是对的吗?还有其他我应该知道的部分吗?有没有办法让第一个问题大声失败而不只是验证一切?

validation ruby-on-rails

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

我可以预先声明变量以解析对象的分配吗?

背景

当我尝试使用数组解构赋值时,我能够预先声明我的变量:

let a, b, c;
let arr = [1, 2, 3, 4, 5];
[a, b, c] = arr;

console.log(a) // logs 1
console.log(b) // logs 2
console.log(c) // logs 3
Run Code Online (Sandbox Code Playgroud)

这通过了Babel编译器就好了.

但是,当我尝试对对象做同样的事情时,我收到了一个错误

let a, b, c
let obj = {cat: 'meow', dog: 'woof', mouse: 'squeak'};
{cat: a, dog: b, mouse: c} = obj;

console.log(a) // I want this to log 'meow'
console.log(b) // I want this to log 'woof'
console.log(c) // I want this to log 'squeak'
Run Code Online (Sandbox Code Playgroud)

这是ES6还是Babel的怪癖/问题?如果它是ES6的故意,为什么与数组的处理方式有所不同? …

javascript destructuring ecmascript-6 babeljs

32
推荐指数
1
解决办法
5044
查看次数

用户登录后重定向

我对Angular很新,而现在我只是试图让我的所有路线都按照我的意愿设置和工作.

设置: 当用户导航到某些页面时(/settings对于此示例),应用程序应检查是否有用户已登录.如果有照常继续.否则,用户应该转到登录页面(/login).

我想要的: 用户成功登录后,应该转到他们最初尝试访问的页面(/settings)

我的问题: 是否有"Angular方式"记住用户试图去的地方?

相关代码:

app.js

  .when('/settings', {
      templateUrl: '/views/auth/settings.html',
      controller: 'SettingsCtrl',
      resolve: {
        currentUser: function($q, $location, Auth) {
          var deferred = $q.defer();

          var noUser = function() {
            //remember where the user was trying to go
            $location.path("/login")
          };

          Auth.checkLogin(function() {
            if (Auth.currentUser()) {
              deferred.resolve(Auth.currentUser());
            } else {
              deferred.reject(noUser());
            }
          });

          return deferred.promise;
        }
      }
    })
Run Code Online (Sandbox Code Playgroud)

login.js

  $scope.submit = function() {
    if(!$scope.logInForm.$invalid) {
      Auth.login($scope.login, $scope.password, $scope.remember_me)
      //go to the page the user …
Run Code Online (Sandbox Code Playgroud)

redirect login angularjs angularjs-routing angularjs-authentication

17
推荐指数
1
解决办法
1万
查看次数

如何在git中处理跟踪生成的文件?

背景:

我们已经在我们的系统中生成了需要在最终状态下提交的文件(例如,我们不能依赖源(未生成的)文件并在运行中生成生成的文件).由于我们需要生成的文件,因此无法忽略这些文件.

问题:

这些文件Your local changes to the following files would be overwritten by merge在checkout和pull命令中从git 触发了很多错误.

当我拉或结账时,我从不关心我的文件是什么,我只关心新文件.(显然我非常关心生成文件的源文件.我很高兴源文件上的合并警告,它保存在不同的目录中.)

但是,当我提交时,我希望我的版本"赢"并生成我生成的文件.

可能的方法:

现在我只是git checkout -- generated-files/在拉或结账之前运行以重置我生成的文件并跳过任何合并错误.它有效,但我经常忘记这样做,如果可能的话我想自动化它.

我看了一个预检验和预拉钩,但git不提供它们:(

问题:

  • 有没有更好的方法来处理生成的文件?
  • 是否有办法强制在git checkout -- generated-files/拉或结账前运行?
  • 你如何处理git中生成的文件?

git githooks gulp

10
推荐指数
1
解决办法
795
查看次数

在Objective-C中使用C++,如何修复"冲突声明'typedef int BOOL'"?

我在C++中有很多代码,最初是在PC上构建的.我试图在Mac上使用Objective-C.为此,我创建了一个Objective-C框架来存放C++代码并添加了一个瘦包装器.但是我在C++代码中遇到了typedef问题.

当我在PC上使用C++时,我使用了BOOLWinDef.h中定义的变量.因此,当我将所有内容移到Mac上时,我添加了typedef int BOOL;以确保BOOL变量仍然按预期编译.

但是当我尝试编译时,我得到一个错误:" Conflicting declaration 'typedef int BOOL'".我假设这是因为BOOLObjective-C中的关键字,因此已经定义了.我也不能只使用Objective-C,BOOL因为它是一个unsigned char而不是int.

当我在寻找可能的解决方案时,我找到了一个提到未定义BOOL的解决方案,但是我找不到怎么做(我也不知道它是否真的有效). 另一个建议 C++文件中的BOOL重命名为非关键字.这个建议对我来说不是一个选择,因为其他项目依赖于C++代码.理想情况下,我所做的任何更改都应保留在一个文件中,或者至少不应对Windows计算机上的代码产生负面影响.

如何为我的C++文件取消定义BOOL的Objective-C定义并使用我添加的C++定义?有没有更好的方法来处理这个问题?

如果它有助于我使用:Xcode 3.2.5,64位和Mac OS X 10.6.6

谢谢你的指导!

c++ typedef declaration objective-c objective-c++

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

如何使用自制程序安装 PCRE?

背景

我有一个正则表达式,我想跨多行运行。我的理解是 OSX 的 grep 无法处理这个问题(如果我错了,请纠正我!)。因此,经过一番谷歌搜索后,我发现 PCRE 可以满足我的要求。brew install pcre我尝试按照一些网站的建议安装它。似乎已经奏效了。如果我brew install pcre再次运行,我会收到此错误Warning: pcre-8.40 already installed,并且我有一个/usr/local/Cellar/pcre/8.40/目录。

问题

通过自制程序安装 PCRE 后,当我pcre: command not found尝试使用该pcre命令时出现此错误。

问题

我需要执行第二步吗brew install pcre?我没有找到任何为此列出的内容,但也许我错过了。我还找到了这些手动安装 PCRE 的说明。与自制程序相比,这样做有缺点吗?

homebrew pcre

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

如何将块/ proc和变量直接传递给函数?

我正在尝试学习块和触发器,我觉得这应该是可行的,但到目前为止我还没有成功.

我想要的是什么:

def main_action(generic_variable, block)
 generic_variable += 1 # I do more interesting stuff than this in my version
 yield(generic_variable)
end

main_action(3, {|num| num + 5 })
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

我找到的最接近的是http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html,似乎需要创建一个传递方法来发送块:

class Monkey

  # Monkey.tell_ape { "ook!" }
  # ape: ook!
  #  => nil
  def self.tell_ape(&block)
    tell("ape", &block)
  end

  def self.tell(name, &block)
    puts "#{name}: #{block.call}"
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我使用在我的代码中设置的相同传递方法,我可以使它工作,但它似乎是不必要的代码.我试着Monkey.tell("ape", { "ook!" })直接打电话,但得到了syntax error, unexpected '}', expecting tASSOC

是否有可能在一次调用中向一个函数发送一个变量和一个块(或proc,我不挑剔)?另外,如果你有时间,上面发生了什么?为什么不起作用?

ruby variables block proc

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

如何查找具有给定名称的多行文件?

问题:如何获得名称中包含多行的所有名为“ interesting-file.txt”的文件?

背景调查:

  • 我可以轻松找到文件 find . -name "interesting-file.txt"
  • 我相信我需要使用某种形式的wc -l来获取他们的行号。
  • 我想我会用awk '$1 > 1'多行查找那些文件。

但是我在将所有内容组合在一起时遇到了问题。

我尝试了几种

find . -name "interesting-file.txt" | awk '{print wc -l $0}'
Run Code Online (Sandbox Code Playgroud)

没有成功。除了寻找相关命令之外,我还没有开始“大于一个”。

我在OSX上,使用标准终端。

谢谢你的帮助!

linux bash command-line

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