我使用postgres的数组数据类型在rails中有一个标记系统.我正在尝试写一个scope会返回任何包含标签的帖子.到目前为止,我有这个范围工作:
scope :with_tag, ->(tag) { where("tags @> ARRAY[?]", tag) }
Run Code Online (Sandbox Code Playgroud)
我想扩展这个范围,以便我可以同时查询多个标签,理想情况如下:
Post.with_tags(['some', 'tags', 'to', 'query'])
Run Code Online (Sandbox Code Playgroud)
哪个会返回任何Post有这些标签的人.我已经考虑过创建一个类方法来处理输入数组的迭代:
def self.with_tags(args)
# start with empty activerecord relation
# want to output AR relation
results = Post.none
args.each do |tag|
results = results.concat(Post.with_tag(tag))
end
results.flatten
end
Run Code Online (Sandbox Code Playgroud)
但这种方法对我来说很有趣,因为它为每个参数创建了一个新的查询.它也不会返回一个ActiveRecord :: Relation,因为flatten我真的希望将它作为输出.
我可以在OR查询范围内完成我所追求的内容吗?
https://jsfiddle.net/e7mcp6xb/
module.exports = Parentheses = (function() {
var _isParenthesesMatch = function(str) {
var parentheses = str.length;
var rightParentheses = '(';
var leftParentheses = ')';
var rightCount = 0;
var leftCount = 0;
for(i=0;i<=str.length;i++){
if(rightParentheses == str.charAt(i))
{
rightCount++;
}
else if(leftParentheses == str.charAt(i))
{
leftCount++;
}
}
if(rightCount == leftCount){
return true;
}
else(rightCount != leftCount){
return false;
}
}
}());
Run Code Online (Sandbox Code Playgroud) 我已将文件中的数据放入数组中,然后我只是保留了我想要的数据,如下所示:
基本上我想要的是独立访问每一列.由于文件将不断变化,我不想要硬编码的东西,我本来已经做到了:).
Element0: | data | address | type | source | disable |
Element1: | 0x000001 | 0x123456 | in | D | yes |
Element2: | 0x0d0f00 | 0xffffff | out | M | yes |
Element3: | 0xe00ab4 | 0xaefbd1 | in | E | no |
我尝试使用正则表达式/\|\s+.*\s+\|/只打印几行(它删除了我关心的数据).我也试过,/\|.*\|/它打印所有空.我用Google搜索了分割方法,我知道发生这种情况是因为.*删除了我关心的数据.我也试过了正则表达式,\|\s*\|但它打印整行.我尝试了许多正则表达式,但此刻我想不出解决这个问题的方法.有什么建议?
`line_ary = ary_element.split(/\|\s.*\|/)
unless line_ary.nil? puts line_ary`
Run Code Online (Sandbox Code Playgroud) 在http://api.rubyonrails.org/classes/Hash.html#method-i-slice 中,我看到
valid_keys = [:mass, :velocity, :time]
search(options.slice(*valid_keys))
Run Code Online (Sandbox Code Playgroud)
我不明白这里的用法。我的意思是,如果我传入一个arrayinto slice,我肯定希望每个都key被切片,那为什么要*在这里使用附加项呢?
是否可以将其变成类似的东西:
valid_keys = [:mass, :velocity, :time]
search(options.simple_slice(valid_keys))
Run Code Online (Sandbox Code Playgroud)
通过创建更简单的slice?
我试图检查我的一个类方法是否响应无效输入有异常,但Rspec没有它.
我的班级文件:
class WhateverClass
def run(options)
if options['input'].nil? || options['input'].empty?
fail ArgumentError, 'No input object provided in configuration.'
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的Rspec测试:
RSpec.describe WhateverClass do
it 'should raise an ArgumentError when provided invalid input' do
invalid_input = { 'nonsense' => 'here' }
expect(WhateverClass.new.run(invalid_input)).to raise_error(ArgumentError)
end
end
Run Code Online (Sandbox Code Playgroud)
运行上述测试的结果如下:
1) WhateverClass should raise an ArgumentError when provided invalid input
Failure/Error: expect(WhateverClass.new.run(invalid_input)).to raise_error(ArgumentError)
ArgumentError:
No input object provided in configuration.
# ./whatever_class.rb:9:in `run'
# ./spec/whatever_class_spec.rb:14:in `block (2 levels) in <top (required)>'
Finished in …Run Code Online (Sandbox Code Playgroud) my %hash = @array;
Run Code Online (Sandbox Code Playgroud)
将数组转换为哈希值,但如何使用$ hash {something}做同样的事情?
正常覆盖将以这种方式工作:
class Fruit {
public:
string color();
};
string Fruit::color() {
return "Unkown";
};
class Apple : public Fruit {
public:
string color();
};
string Apple::color() {
return "Green";
};
Run Code Online (Sandbox Code Playgroud)
现在,你称之为:
Apple *apple = new Apple();
std::cout << apple->color();
Run Code Online (Sandbox Code Playgroud)
这将输出Green,这是正确的!但是,在以下情况下运行它(当然这只是一个例子):
Apple *apple = new Apple();
printHealthy(apple);
// Method printHealthy:
void printHealthy(Fruit *fruit) {
std::cout << fruit->color();
};
Run Code Online (Sandbox Code Playgroud)
这将输出Unkown,我可以理解,因为你将Apple转换为Fruit,从而'替换'它的方法.但我怎么还能了解它的真实颜色呢?
要求:
Apple--class.将会有更多Apple的东西,在旅途中分配.Apple类(例如Tomato,它们当然有不同的名称)是它的子类Fruit.Apple哪种颜色为 …我想在一行中找到一个' - '字符,但是这个字符用于指定一个范围.我可以得到一个包含' - '字符的sed模式示例吗?
此外,如果我可以使用包含除空格和制表符之外的所有字符的模式,则会更快.
我有以下文本文件.
bob jones,19,moore reef,yes,no
jenny smith, 21,reef park,yes,yes
any body, 12,somewhere,no,no
Run Code Online (Sandbox Code Playgroud)
我希望每一行都在一个单独的数组中,或者我希望每个数据片段都有单独的数组(例如,name_array,age_array,destination_array等).
我怎么能这样做?
假设我有一个名为"人"的模型,那个人是根据姓名,年龄,性别和种族来定义的.
如何遍历模型以找出哪些值为零?
例如:
姓名:彼得
年龄:34岁
性别:零
种族:没有
- 尼尔数:2--
我知道我会遍历每个字段,如果为nil则输入+1 if并输出总值.
感谢您的帮助或指导!
ruby ×5
regex ×2
activerecord ×1
arrays ×1
c++ ×1
count ×1
exception ×1
file ×1
hash ×1
javascript ×1
linux ×1
null ×1
overriding ×1
perl ×1
postgresql ×1
rspec ×1
sed ×1
stream ×1
subclassing ×1
text ×1
unix ×1