我有一个数字列表:( 7,1,3,2,123,55这是现有记录的ID)
我与colums一个MySQL表id和name,其中id是一个整数主键.我想从该表中选择的记录,但在一个特定的顺序,例如7,1,3,2,123,55.
这很好:
def foo
a or b
end
Run Code Online (Sandbox Code Playgroud)
这也没关系:
def foo
return a || b
end
Run Code Online (Sandbox Code Playgroud)
返回void value expression:
def foo
return a or b
end
Run Code Online (Sandbox Code Playgroud)
为什么?它甚至没有被执行; 它没有通过语法检查.什么void value expression意思?
我能找到的最接近的是在Ruby中,如何检查方法"foo =()"是否已定义?,但只有当方法是公共的时,它才有效,即使在类块内.
我想要的是:
class Foo
private
def bar
"bar"
end
magic_private_method_defined_test_method :bar #=> true
end
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
class Foo
private
def bar
"bar"
end
respond_to? :bar #=> false
#this actually calls respond_to on the class, and so respond_to :superclass gives true
defined? :bar #=> nil
instance_methods.include?(:bar) #=> false
methods.include?(:bar) #=> false
method_defined?(:bar) #=> false
def bar
"redefined!"
end # redefining doesn't cause an error or anything
public
def bar
"redefined publicly!"
end #causes no error, behaves no differently whether …Run Code Online (Sandbox Code Playgroud) 在红宝石中,一些大数字大于无穷大.通过二进制搜索,我发现:
(1.0/0) > 10**9942066.000000001 # => false
(1.0/0) > 10**9942066 # => true
RUBY_VERSION # => "2.3.0"
Run Code Online (Sandbox Code Playgroud)
为什么是这样?10 9942066有什么特别之处?它似乎不是像9999999这样的任意数字,它不接近任何两个的幂(它与2 33026828.36662442大致相等).
为什么红宝石的无限无限?10 9942066如何参与?
我现在意识到,任何大于10 9942066的数字都会溢出到无穷大:
10**9942066.000000001 #=> Infinity
10**9942067 #=> Infinity
Run Code Online (Sandbox Code Playgroud)
但这仍然留下了一个问题:为什么10 9942066?
所以我正在制作一个狂欢扩展,其中我有自己的属性,我Spree::Shipment在结帐过程中添加并添加了一个输入,问题是我的属性不是出货的允许属性的一部分,并且不清楚如何将其添加到允许的属性中.我找到了这个拉动请求的对话,据说要使用
Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚我在哪里放这个!?
"哦,把它放进去spree.rb"
这没有用.我试过把这段代码放进去
lib/spree.rb
lib/spree/permitted_attributes.rb
lib/spree_decorator.rb
lib/spree/permitted_attributes_decorator.rb
Run Code Online (Sandbox Code Playgroud)
(如此处所示)并且所有这些都导致错误抱怨shipment_attributes未被定义(因此可能是在PermittedAttributes评估主文件定义之前运行代码)或者根本没有任何反应.我应该在哪里放置此代码以将我的属性添加到允许的属性列表中?
编辑:由于这对人们来说似乎不清楚,我已经尝试了我发布的链接中列出的所有内容.告诉我尝试其中的东西是非常令人愤怒的.别那样做.
刚在我的浏览器控制台中试过这个:
!!0 //=> false
{} + [] //=> 0
!!({} + []) //=> true
Run Code Online (Sandbox Code Playgroud)
这里发生了什么!?
编辑:我说的是{} + [](对象优先)与[] + {}(数组优先)不同,后者总是返回0.间距({}+[]vs {} + [])似乎并不重要
我正在阅读Rails:从控制台检查路径助手的输出,但没有一个解决方案适合我,大概是因为它们都是Rails 2/3.
在Rails 4/5中,如何从rails控制台访问*_path和*_url助手?
require 'sequel'
require 'jdbc/postgres'
DB = Sequel.connect("jdbc:postgresql://user:pass@domain/database")
DB.tables
Run Code Online (Sandbox Code Playgroud)
返回:
....(bla bla bla stack trace bla bla bla)....
Sequel::DatabaseConnectionError: Java::OrgPostgresqlUtil::PSQLException: The connection attempt failed.
...........
Run Code Online (Sandbox Code Playgroud)
我也试过了
jdbc:postgresql://domain/database?user=name&pass=word
Run Code Online (Sandbox Code Playgroud)
并且也有错误,但是另一个错误('密码请求但未提供')
红宝石1.9.3 - jruby 1.7.3
我看了看,试了很多代码样本,但是我无法让Sequel工作所以,在使用jruby时如何获得与postgres接口的续集?
我目前正在使用带有Heroku的Sinatra,唯一的同步是数据库.因此,我需要存储在数据库中的会话(希望不使用ActiveRecord).
是否有Rack中间件或其他类似的东西?
我看到我的代码中一直出现这种情况
class Foo
def initialize(foo)
@foo = foo
end
#...
end
Run Code Online (Sandbox Code Playgroud)
这不是太糟糕,但它变得更糟:
class Foo
def initialize(foo,baz,bar,a,b,c,d)
@foo = foo
@baz = baz
@bar = bar
#etc...
Run Code Online (Sandbox Code Playgroud)
你可以通过做类似的事情来解决这个问题
@foo, @baz, @bar = foo, baz, bar
Run Code Online (Sandbox Code Playgroud)
但即使这样做感觉不对,也很烦人.有没有更好的方法根据参数定义实例变量?
编辑:这个问题似乎有2个不同的解决方案.看到:
rails 路由和 when 以及其他一些我不记得的东西都有一个用户指定的模板字符串,如下所示:
template_str = "I am going to :place at :time"
Run Code Online (Sandbox Code Playgroud)
然后有一些神奇的函数可以嵌入数据代替:placeand :time,如下所示:
template_str.magic_embed_function(place: 'bed', time: '10 pm')
#=> "I am going to bed at 10 pm"
Run Code Online (Sandbox Code Playgroud)
我怎样才能在我的 ruby 项目中做到这一点?有实现的 gemString#magic_embed_function吗?
ruby ×7
biginteger ×1
class ×1
heroku ×1
int ×1
javascript ×1
jdbc ×1
jruby ×1
mysql ×1
or-operator ×1
php ×1
postgresql ×1
replace ×1
return ×1
sequel ×1
session ×1
sinatra ×1
spree ×1