Ruby on rails 迭代数组,调整一个虚拟属性并返回带有调整值的数组
我有一个rails类,称为标记:Ruby on rails 迭代数组,调整一个虚拟属性并返回带有调整值的数组,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个rails类,称为标记: class Tag < ActiveRecord::Base attr_accessor :is_enabled_on_item # a virtual attribute for ouptutting json 要得到像: [ { tagid:1, phrase: "blue", is_enabled_on_item: true }, { tagid:2, phrase
class Tag < ActiveRecord::Base
attr_accessor :is_enabled_on_item # a virtual attribute for ouptutting json
要得到像:
[
{
tagid:1,
phrase: "blue",
is_enabled_on_item: true
},
{
tagid:2,
phrase: "yellow",
is_enabled_on_item: false
}
]
我试着收集
t.collect { |tmp| tmp.is_enabled_on_item=true if current_tag_ids.include?(tmp.tagid) }
但是它返回了[对,错]
。我将如何实现我想要的
编辑#1
我希望它返回一个标签数组
这样做可能会奏效,但中介arr
似乎没有必要:
arr=[]
t.each do |tmp|
tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid)
arr << tmp
end
arr
arr=[]
t、 每一个都做| tmp |
tmp.is_enabled_on_item=当前标签ID.include?(tmp.tagid)
arr您对collect的看法几乎正确,请尝试以下方法:
t.collect { |tmp| tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid); tmp }
注意,赋值返回赋值,而为了收集标记,必须在块中返回标记
最好向前迈进一步,使用更规范的方法和参数名称:
tags.map { |tag| tag.is_enabled_on_item=current_tag_ids.include?(tag.tagid); tag }
隐马尔可夫模型。。。看起来它将返回一个哈希数组,而不是一个tagsIt数组,它将返回您所请求的。。散列数组
t.collect { |tmp| tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid); tmp }
tags.map { |tag| tag.is_enabled_on_item=current_tag_ids.include?(tag.tagid); tag }