运营部门不允许在生产中进行迁移.我现在需要提供sql语句来插入一些记录 - 我知道可以使用arel调用'to_sql',并从finder中提取sql.
有没有办法为'创建/保存'做同样的事情?
在java中,我会创建这样的东西:
private static MyClass instance;
public static MyClass getInstance() {
if(instance != null) {
return instance;
}
instance = new MyClass();
return instance;
}
Run Code Online (Sandbox Code Playgroud)
在 ruby 中获得相同功能的合适方法是什么?
更新:我已经阅读了关于“包含单例”的内容,但是当我尝试在 Ruby 1.9 上的 irb 中执行此操作时,我得到了:
[vertis@raven:~/workspace/test]$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin9.4.0]
[vertis@raven:~/workspace/test]$ irb
irb(main):001:0> class TestTest
irb(main):002:1> include Singleton
irb(main):003:1> end
NameError: uninitialized constant TestTest::Singleton
from (irb):2:in `<class:TestTest>'
from (irb):1
from /usr/local/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud) 我试图创建一个使用红宝石(及净:: SSH)连接到服务器,并执行一些任务的程序.服务器的详细信息将提供为:
ssh://user:pass@host:port (for a host that does not yet have SSH keys)
Run Code Online (Sandbox Code Playgroud)
要么
user@host
Run Code Online (Sandbox Code Playgroud)
Net :: SSH需要以下格式:
Net::SSH.start('host', 'user', :password => "password")
Run Code Online (Sandbox Code Playgroud)
是否有gem/stdlib可以将URL处理为这种格式?还是一个可以匹配不同部分的简单正则表达式?
注意:我知道并使用了capistrano但在这种情况下我需要更低级别的控制.
如果我有一系列名字:
["Alex Ainsworth", "Bob Brown", "Charles Clarke"]
Run Code Online (Sandbox Code Playgroud)
我想要一个字符串,其中除了最后一个用逗号分隔(最后一个是和):
e.g. "Alex Ainsworth, Bob Brown and Charles Clarke"
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的优雅方式?
更新:我在这种情况下使用Rails,但我问的是一个让我感兴趣的更通用的问题.
我经营一个购物车,产品可以有其他选择.例如,product1可以有多个选项,例如:
尺寸:s,m,l,xl
颜色:红色,蓝色,绿色
默认产品存储在customers_basket.
其他选择的项目存储在customers_basket_attributes.
在这两个表中,我插入了一个名为的唯一键products_unique_id.
这是为了识别客户何时添加具有相同选项的另一产品,如果是,我只需要更新customers_basket表的数量字段.
如果用户插入相同的产品但具有不同的选项,则products_unique_id更改.
以下查询不起作用:
SELECT * FROM
customers_basket_attributes cba,
customers_basket cb
WHERE
cba.products_id = cb.products_id
AND
cba.products_unique_id = cb.products_unique_id
AND customers_id="1"
Run Code Online (Sandbox Code Playgroud)
但是,此查询有效:
SELECT * FROM
customers_basket cb,
products p,
products_description pd
WHERE
cb.products_id = p.products_id
AND
cb.products_id = pd.products_id
AND customers_id="1"
Run Code Online (Sandbox Code Playgroud)
这也有效:
SELECT * FROM
customers_basket_attributes cba,
products p,
products_description pd
WHERE
cba.products_id = p.products_id
AND
cba.products_id = pd.products_id
AND customers_id="1"
Run Code Online (Sandbox Code Playgroud)
数据库结构和记录
以下是测试上述查询所需的数据库结构和记录: …
ruby ×3
sql ×2
activerecord ×1
arel ×1
coding-style ×1
count ×1
net-ssh ×1
singleton ×1
sqlite ×1
url ×1