小编krn*_*krn的帖子

如何确定哈希中的所有元素都已定义?

检查Ruby哈希中是否定义了所有对象(不是nil)的最佳方法是什么?

如果散列中至少有一个元素为nil,则该语句应返回false.

ruby hash

13
推荐指数
2
解决办法
9035
查看次数

Ruby正则表达式:在引号之间提取文本

从文本中获取引用的单词/短语的最佳方法是什么?

我的尝试无法正常工作:

text.scan(/\"([^"]+)/)
Run Code Online (Sandbox Code Playgroud)

ruby regex

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

Ruby regexp:捕获url的路径

从我想要提取其路径的任何URL.

例如:

网址:https://stackoverflow.com/questions/ask 路径:问题/问题

这应该不难:

url[/(?:\w{2,}\/).+/]
Run Code Online (Sandbox Code Playgroud)

但我认为我使用错误的模式'忽略这个'('?:' - 不起作用).什么是正确的方法?

ruby regex

13
推荐指数
1
解决办法
6317
查看次数

Ruby on Rails ActiveRecord"has_many:through"唯一性验证

目前我每次检查都会插入一个新关系,如果它不存在:

unless Relationship.exists?(:entry_id => entry.id, :tag_id => tag.id)
Run Code Online (Sandbox Code Playgroud)

我如何在关系模型中实现这样的验证,以便它不允许在同一条目和标记之间有多个关系?

activerecord ruby-on-rails

13
推荐指数
2
解决办法
8213
查看次数

WebSockets和Heroku:将数据推送给用户

我使用Ruby on Rails构建了一个实时Web应用程序,而Heroku似乎是托管它的最佳选择.

我希望在用户可用时将新数据推送给用户,而不是每隔几秒钟发送一次AJAX请求.

Pusher似乎被Heroku建议用于此类工作,但它有一些限制,带来额外的成本,并使您依赖外部API.

在Heroku上还有其他选项可以使用WebSockets吗?

ruby-on-rails heroku websocket

11
推荐指数
1
解决办法
6779
查看次数

Rails ActiveRecord验证:字符串的最大长度?

我在数据库迁移文件中有这些字符串/文本字段:

  t.string :author
  t.string :title
  t.string :summary
  t.text :content
  t.string :link
Run Code Online (Sandbox Code Playgroud)

这些是我的问题:

  1. 每个字符串/文本属性都应具有最大长度验证,用于两个目的,安全性(如果您不希望接收几MB文本输入)和数据库(如果string = varchar,则mysql限制为255个字符).这是对的还是有任何理由不对数据库中的每个字符串/文本属性进行最大长度验证?
  2. 如果我不关心作者和标题的确切长度,因为它们不会太长而不能存储为字符串,我应该为每个字符串设置最大长度为255吗?
  3. 如果URL的最大可能长度大约为2000个字符,将链接存储为字符串是否安全,而不是文本?如果我已经使用regexp验证其格式,我是否应该验证链接属性的最大长度?
  4. 内容(文本)属性是否应该具有最大长度,以保护数据库免受无限长度的输入?例如,将文本字段的最大长度设置为100,000个字符是否合理,或者这是完全没有意义且效率低下的?

我理解,这些问题对某些人来说似乎并不重要,但仍然 - 这是对输入的验证,这是任何应用程序都需要的 - 而且我认为在这里相当偏执是值得的.

validation activerecord ruby-on-rails

11
推荐指数
1
解决办法
8128
查看次数

SQL:"NOT IN"子查询优化或替代方案

我有两个数据库表:"places"和"translations".地名的翻译是通过从"地点"中选择记录来完成的,这些记录还没有指定语言的翻译:

SELECT `id`, `name`
FROM `places`
WHERE `id` NOT IN (SELECT `place_id` FROM `translations` WHERE `lang` = 'en')
Run Code Online (Sandbox Code Playgroud)

这可以很好地处理7 000个地方的记录,但是当翻译数达到5 000时崩溃.从那时起,查询大约需要10秒并返回错误:

2006年 - MySQL服务器已经消失

据我所知,这里的主要问题是子查询返回到很多结果,如果我需要选择所有尚未翻译的地方,我怎么能解决呢?

我的计划B是在"places"表中创建一个新的布尔字段,称为"翻译",并在每次更改语言时将其重置为"false" - 这将阻止子查询.但是,也许我可以修改当前的SQL语句并防止添加其他字段?

mysql subquery

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

Ruby中抽象类的替代方案?

我是Ruby的新手.一个简单的例子,我需要的:

class Animal
   abstract eat()

class Cat < Animal
   eat():
     implementation

class Dog < Animal
   eat():
     implementation
Run Code Online (Sandbox Code Playgroud)

换句话说,所有扩展Animal的类都需要eat()方法.

在JAVA中我只使用一个抽象类,但经过一些研究后我发现许多人不在Ruby中使用它,而建议使用mixin/modules.

但是,我不明白,如果模块可以做的不仅仅是包含一个额外的方法.确切地说,模块是否可以为类必须实现哪些方法设置要求(如果是,可以赞赏一个例子)?

总而言之,在这种情况下我应该使用什么,当我想确定,所有相同类型的类都有特定的方法并以自己的方式实现它们?

ruby abstract-class mixins

9
推荐指数
2
解决办法
6146
查看次数

MySQL:"group by"里面的"order by"

我有一个MySQL表names,它由两个字段组成:name和rank.该name值不唯一可以有多个匹配.

问题:我想选择分组的记录,name但是如果有多个记录,则应该选择name具有最高记录的记录rank.

一个例子:

汤姆2

本1

本2

SELECT*FROM namesGROUP BY name ORDER BY rankDESC

通常会返回:

汤姆2

本1

我需要:

汤姆2

本2

由于有两个Bens,但第二个具有更高的等级.

似乎,MySQL分组采用了名字而忽略了其余部分.

如何在"分组依据"中订购记录,以便我可以说应该采取哪条记录,如果有多条记录相同name?

mysql group-by

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

Heroku Cedar:如何停止使用WEBrick

在我的Gemfile中我有:

gem 'thin'
Run Code Online (Sandbox Code Playgroud)

但是当我将我的应用程序推送到Heroku Cedar时,WEBrick仍在使用(日志中的"Booting WEBrick").

哪里可能有问题?

heroku

9
推荐指数
1
解决办法
1655
查看次数