小编Luk*_*ick的帖子

为ActiveRecord模型创建/保存提取生成的sql

运营部门不允许在生产中进行迁移.我现在需要提供sql语句来插入一些记录 - 我知道可以使用arel调用'to_sql',并从finder中提取sql.

有没有办法为'创建/保存'做同样的事情?

sql activerecord arel

9
推荐指数
0
解决办法
423
查看次数

确保类的单个实例的正确方法是什么?

在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)

ruby singleton coding-style

3
推荐指数
1
解决办法
1112
查看次数

如何处理在Ruby网址,以获取零件(方案,用户名,密码,主机等)?

我试图创建一个使用红宝石(及净:: 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但在这种情况下我需要更低级别的控制.

ruby url net-ssh

3
推荐指数
1
解决办法
5010
查看次数

使用Ruby加入名称(','和'和')的优雅方式

如果我有一系列名字:

["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,但我问的是一个让我感兴趣的更通用的问题.

ruby

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

在SELECT查询中连接两个表不起作用

我经营一个购物车,产品可以有其他选择.例如,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)

数据库结构和记录

以下是测试上述查询所需的数据库结构和记录: …

sql sqlite count

-4
推荐指数
1
解决办法
561
查看次数

标签 统计

ruby ×3

sql ×2

activerecord ×1

arel ×1

coding-style ×1

count ×1

net-ssh ×1

singleton ×1

sqlite ×1

url ×1