小编Cur*_*ind的帖子

以及在Ruby on Rails中的首次演出

这是关于ActiveRecord查询方法的问题:

  • first查找第一条记录(如果提供参数,则为前N条记录).如果没有定义订单,它将按主键排序.
  • take提供记录(如果提供参数,则为N条记录),没有任何隐含的顺序.订单将取决于数据库实施.如果提供订单,则会受到尊重.

usecase:基于唯一属性从数据库中检索记录,例如.

User.where(email: 'f@example.com')
Run Code Online (Sandbox Code Playgroud)

在这里, first生成

SELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' ORDER BY "users"."id"` ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

take 生成

SELECT "users".* FROM "users" WHERE "users"."email" = 'f@example.com' LIMIT 1
Run Code Online (Sandbox Code Playgroud)

所以如上所述first增加了额外的订购条款.我想知道takevs 之间是否有性能差异first.

takefirst还是反之?

sql activerecord ruby-on-rails ruby-on-rails-4

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

在Ruby中打印类的所有方法名称?

如果我想列出我可以使用的类的所有方法Class_Name.methods,那么,例如,列出FixNum类中的所有方法:

> 5.methods
 => [:to_s, :-@, :+, :-, :*, :/, :div, :%, :modulo, :divmod, :fdiv, :**, :abs, :magnitude, :==, :===, :<=>, :>, :>=, :<, :<=, :~, :&, :|, :^, :[], :<<, :>>, :to_f, :size, :zero?, :odd?, :even?, :succ, :integer?, :upto, :downto, :times, :next, :pred, :chr, :ord, :to_i, :to_int, :floor, :ceil, :truncate, :round, :gcd, :lcm, :gcdlcm, :numerator, :denominator, :to_r, :rationalize, :singleton_method_added, :coerce, :i, :+@, :eql?, :quo, :remainder, :real?, :nonzero?, :step, :to_c, :real, :imaginary, :imag, :abs2, :arg, :angle, …
Run Code Online (Sandbox Code Playgroud)

ruby

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

生成模型时指定限制的语法

在rails中,我们可以像这样生成模型

rails generate model post title:string body:text published:boolean
Run Code Online (Sandbox Code Playgroud)

根据rails指南,该命令具有以下语法

$ rails generate model
Usage: rails generate model NAME [field:type field:type] [options]
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以为每个字段指定限制/长度作为一部分[options]?另外,[options]参数有什么用?

activerecord ruby-on-rails ruby-on-rails-3

18
推荐指数
1
解决办法
6781
查看次数

ActiveRecord的finder方法之间的区别:take vs limit(1)

考虑以下ActiveRecord的finder方法.

  • .take.例.Account.take
  • .limit(1) 例. Account.limit(1)

现在,两种方法都有不同的名称,但它们生成相同的查询:

SELECT "accounts".* FROM "accounts" LIMIT 1
Run Code Online (Sandbox Code Playgroud)

那么,.take&之间有什么区别.limit(1)?或者他们是一样的?

activerecord ruby-on-rails ruby-on-rails-4

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

如何将SimpleXMLObject转换为PHP数组?

请考虑以下代码:

$string = '<device>
    <id>1234</id>
    <label>118</label>
    <username>root</username>
    <password>helloWorld</password>
    <hardware>
        <memory>4GB RAM</memory>
        <storage_drives>
            <storage_drive_1>2TB SATA 7,200RPM</storage_drive_1>
            <storage_drive_2>1TB SATA 7,200RPM</storage_drive_2>
            <storage_drive_3>Not Applicable</storage_drive_3>
            <storage_drive_4>Not Applicable</storage_drive_4>
        </storage_drives>
    </hardware>
</device>';
$xml = new SimpleXMLElement($string);

$deviceDetails = Array();
foreach($xml as $element){
    $tag = $element->getName();
    $deviceDetails +=  Array($tag => '$element->$tag)',
        );
    }
Run Code Online (Sandbox Code Playgroud)

输出$detailsDetails数组如下:

Array
(
    [id] => $element->$tag)
    [label] => $element->$tag)
    [username] => $element->$tag)
    [password] => $element->$tag)
    [hardware] => $element->$tag)
)
Run Code Online (Sandbox Code Playgroud)

这是错的.

我的问题是,如何$element->$tag开展工作?

php arrays simplexml

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

$ :. push在ruby中做什么?

我在测量师宝石的 Gemspec文件中找到了这个.以下几行有什么作用?

$:.push File.expand_path("../lib", __FILE__)
require "surveyor/version"
Run Code Online (Sandbox Code Playgroud)

为什么这样$:.push做?对我而言,它看起来就像requires../lib/surveyor/version文件.如果是这样,我不能只用一行替换它吗?

require File.expand_path('../lib/surveyor/version', __FILE__)
Run Code Online (Sandbox Code Playgroud)

两者都是一样的吗?如果没有,那又有什么区别?

ruby rubygems gemspecs

16
推荐指数
1
解决办法
2754
查看次数

打印命令行参数时无额外输出

这是我学习python的第一天.所以这对你们许多人来说都是一个noob问题.请参阅以下代码:

#!/usr/bin/env python

import sys

def hello(name):
    name = name + '!!!!'
    print 'hello', name

def main():
    print hello(sys.argv[1])


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

当我运行它

$ ./Python-1.py alice
hello alice!!!!
None
Run Code Online (Sandbox Code Playgroud)

现在,我无法理解它的"None"来源?

python function

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

撤消在GIT中压缩提交时发生的错误

我想把我最后的2个提交压缩成一个,所以做了一个git rebase,按照以下方式:

git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)

但由于一个错字,我实际上最终推出的原因是:

git rebase -i HEAD-3
Run Code Online (Sandbox Code Playgroud)

现在,在Github Pull Request中,它显示了一些其他无关提交的提交.基本上,我想删除06674f0不属于我的提交,同时保留fcea5e0此PR.

如何解决简单拼写错误造成的混乱?

git github

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

正常变量Vs Ruby中的实例变量,有什么区别?

请考虑以下示例ruby类

class User
  def hello
    puts "hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,用于初始化.有两种方法

正常变量

1.9.3p125  > tr = User.new
 => #<User:0x98778c4>
1.9.3p125  > tr.hello
 Hello world
 => nil`
Run Code Online (Sandbox Code Playgroud)

实例变量:

1.9.3p125 > @tr = User.new
 => #<User:0x9890f2c>
1.9.3p125 > @tr.hello
Hello world
 => nil
Run Code Online (Sandbox Code Playgroud)

现在,在这两种情况下它都是一样的.那么正常变量和实例变量有什么区别?

ruby variables

13
推荐指数
1
解决办法
6682
查看次数

如何调试特定的javascript点击事件?

在雅虎天气页面上,有一个链接标记为C将温度单位从更改FahrenheitCelsius.
Wheater雅虎

我正在调试这个动作,并了解在将F转换为C的幕后执行的javascript是什么.调试这些事情的方式是什么?

链接:http://weather.yahoo.com/?w = 2295401

javascript javascript-events javascript-debugger

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