小编tok*_*and的帖子

返回随机布尔值的最佳方法

我已经使用它一段时间返回truefalse建立假种子数据.只是想知道是否有人有更好,更简洁或冗长的方式返回truefalse.

rand(2) == 1 ? true : false
Run Code Online (Sandbox Code Playgroud)

ruby

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

为什么"本地"扫描命令的返回码?

这个Bash片段的工作原理与我预期的一样:

$ fun1() { x=$(false); echo "exit code: $?"; }
$ fun1
exit code: 1
Run Code Online (Sandbox Code Playgroud)

但是,这个,使用local,不:

$ fun2() { local x=$(false); echo "exit code: $?"; }
$ fun2
exit code: 0
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么要local扫描命令的返回码?

bash shell local

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

将秒数转换为小时,分钟,秒

如何将秒数转换为小时,分钟和秒?

show_time() {
  ?????
}

show_time 36 # 00:00:36
show_time 1036 # 00:17:26
show_time 91925 # 25:32:05
Run Code Online (Sandbox Code Playgroud)

bash

41
推荐指数
11
解决办法
7万
查看次数

是否有一种干净的方法可以避免在嵌套的params哈希中调用nil上的方法?

我有兴趣获取params哈希的嵌套'name'参数.打电话给像

params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)

当params [:subject]为空时抛出错误.为了避免这个错误,我通常写这样的东西:

if params[:subject] && params[:subject][:name]
Run Code Online (Sandbox Code Playgroud)

有没有更清洁的方法来实现这一点?

ruby null ruby-on-rails hashmap

33
推荐指数
4
解决办法
6320
查看次数

rails 3:我需要在before_save回调中返回true才能使object.save工作吗?

Class User  
  before_save :set_searchable

  def set_searchable  
    self.searchable = true if self.status == :active  
  end  
end  

>> u = User.last  
>> u.save  
false  
Run Code Online (Sandbox Code Playgroud)

u.save总是返回false.如果我删除before_save它也有效,如果我在before_save中返回true它是有效的

所以我需要在before_save中给出return语句吗?如果before_save返回false,ActiveRecord会保存一个对象吗?

我在哪里可以看到有关回调及其工作流程的完整文档.

提前致谢

ruby activerecord callback ruby-on-rails-3

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

为什么切割params散列会对批量分配造成安全问题?

通过批量分配来防止安全风险的官方方法是使用attr_accessible.但是,一些程序员认为这不是模型的工作(或者至少不仅仅是模型).在控制器中执行此操作的最简单方法是切换params哈希:

@user = User.update_attributes(params[:user].slice(:name))
Run Code Online (Sandbox Code Playgroud)

但是文档说明:

请注意,使用Hash#except或Hash#slice代替attr_accessible来清理属性将无法提供足够的保护.

这是为什么?为什么白名单切片的params不能提供足够的保护?

更新: Rails 4.0将发布强参数,一个精确的参数切片,所以我猜整个切片事情毕竟不是那么糟糕.

ruby security ruby-on-rails mass-assignment strong-parameters

15
推荐指数
1
解决办法
5719
查看次数

如何让 TS 在通用构建器函数中推断回调?

考虑以下用例演示 ( playground ):

// A builder that can self-reference its keys using a ref function
declare function makeObj<K extends string>(
    builder: (ref: (k: K) => number) => Record<K, number>
): Record<K, number>;

// Not using `ref` for now. All good, K is inferred as <"x" | "y">.
const obj1 = makeObj(() => ({ x: 1, y: 2 }));

// Oops, now that we try to use `ref`, K is inferred as <string>.
const obj2 = makeObj(ref => ({ x: …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

15
推荐指数
1
解决办法
171
查看次数

跳过回调和验证

有没有办法通过在Rails 3中的这些行做一些事情来跳过回调和验证?

Object.save(:validate => false, :skip_callbacks => true)
Run Code Online (Sandbox Code Playgroud)

谢谢!

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

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

JSON包括语法

我的设置:Rails 2.3.10,Ruby 1.8.7

我在几个模型之间有一套相当复杂的关系.

class A
  has_many :classB
  has_many :classD
end

class B
  belongs_to :classA
  has_many :classC
end

class C
  belongs_to :classB
  belongs_to :classE
end

class D
  belongs_to :classA
  belongs_to :classE
end

class E
  has_many :classD
  has_many :classC
end
Run Code Online (Sandbox Code Playgroud)

我遇到了使用JSON语法的问题,以获取以classA开头的所有相关信息.这是我到目前为止所做的工作.

classA.to_json(:include => {:classB => {:include => [:classC, :classE]}})
Run Code Online (Sandbox Code Playgroud)

我无法使语法工作也包括classD和相关的classE记录.

更新实际上这样的东西可能会起作用,除了我不能混合哈希和数组

classA.to_json(:include => [ :classB => { :include => { :classC => { :include => :classE } } },
                             :classD, :classE  ])
Run Code Online (Sandbox Code Playgroud)

请注意,我在上面的示例代码中没有使用单数/复数,但在我的实际代码中,我是.任何见解将不胜感激.

谢谢,鲍勃

json ruby-on-rails

7
推荐指数
1
解决办法
6175
查看次数

将枚举器转换为惰性枚举器

一个枚举可以被转换成使用懒惰枚举枚举:: Lazy.new这样的(这是一个例子;在开始时,我已经有一个枚举,而不是一个数组):

xs_enum = [1, 2, 3].to_enum
# => #<Enumerator: [1, 2, 3]:each>
xs_lazy_enum = Enumerator::Lazy.new(xs_enum, &:yield)
# => #<Enumerator::Lazy: #<Enumerator: [1, 2, 3]:each>:each>
xs_lazy_enum.force
# => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

有更简洁的方法吗?

ruby

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