我已经使用它一段时间返回true或false建立假种子数据.只是想知道是否有人有更好,更简洁或冗长的方式返回true或false.
rand(2) == 1 ? true : false
Run Code Online (Sandbox Code Playgroud) 这个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扫描命令的返回码?
如何将秒数转换为小时,分钟和秒?
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) 我有兴趣获取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)
有没有更清洁的方法来实现这一点?
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会保存一个对象吗?
我在哪里可以看到有关回调及其工作流程的完整文档.
提前致谢
通过批量分配来防止安全风险的官方方法是使用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
考虑以下用例演示 ( 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) 有没有办法通过在Rails 3中的这些行做一些事情来跳过回调和验证?
Object.save(:validate => false, :skip_callbacks => true)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我的设置: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)
请注意,我在上面的示例代码中没有使用单数/复数,但在我的实际代码中,我是.任何见解将不胜感激.
谢谢,鲍勃
一个枚举可以被转换成使用懒惰枚举枚举:: 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)
有更简洁的方法吗?