什么是Ruby <=>(宇宙飞船)运营商?运营商是否通过其他语言实施?
我使用以下代码来检查变量是否为零而不是零
if(discount != nil && discount != 0)
...
end
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
这是排序哈希并返回哈希对象(而不是数组)的最佳方法:
h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
# => {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
Hash[h.sort]
# => {"a"=>1, "b"=>2, "c"=>3, "d"=>4}
Run Code Online (Sandbox Code Playgroud) 我根据github方向安装了rbenv.我正在运行OSX,但我在Ubuntu 12.04 VM上尝试了这个并得到了相同的结果.当我尝试更改ruby版本时,以下是我在终端中获得的内容:
rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125
rbenv global
1.9.3-p0
rbenv rehash
ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
which ruby
/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法为什么rbenv没有像它认为的那样切换ruby版本?此外,本地目录中没有.rbenv文件会导致ruby版本默认为1.8.7
rbenv local
rbenv: no local version configured for this directory
Run Code Online (Sandbox Code Playgroud) @user.update_languages(params[:language][:language1],
params[:language][:language2],
params[:language][:language3])
lang_errors = @user.errors
logger.debug "--------------------LANG_ERRORS----------101-------------"
+ lang_errors.full_messages.inspect
if params[:user]
@user.state = params[:user][:state]
success = success & @user.save
end
logger.debug "--------------------LANG_ERRORS-------------102----------"
+ lang_errors.full_messages.inspect
if lang_errors.full_messages.empty?
Run Code Online (Sandbox Code Playgroud)
@userobject会向方法中的lang_errors变量添加错误update_lanugages.当我对@user对象执行保存时,我丢失了最初存储在lang_errors变量中的错误.
虽然我试图做的更多是一个黑客(似乎没有工作).我想了解为什么变量值被淘汰了.我理解通过引用传递,所以我想知道如何在不被淘汰的情况下将该值保存在该变量中.
我真的很喜欢Rails(尽管我通常都是RESTless),而且我非常喜欢Ruby.仍然,制作巨大的ActiveRecord子类和巨大的控制器的趋势是很自然的(即使你每个资源都使用一个控制器).如果你要创建更深层次的对象世界,你会在哪里放置类(和模块,我想)?我问的是(帮助者自己?),控制器和模型的观点.
Lib是可以的,我找到了一些解决方案,让它在开发环境中重新加载,但我想知道是否有更好的方法来做这些事情.我真的只是担心课程变得太大了.那么,Engines怎么样?它们如何适应?