下午全部,
我有一个名为content的字段,它是Snippet的字符串。 Snippet是Book的孩子。我希望获得每个片段中所有内容的总字数,以便定义总字数,然后我可以将其限制为验证。
任何人都有任何想法如何做到这一点,或者给我一个内网上其他地方所需代码的例子。
快速扩展到此。我需要为书中当前存储为[0,1,2]的书中的每个尺寸定义不同的字数:书模型中的尺寸。我该怎么做?
答案 0 :(得分:2)
我对你的问题的第一部分并不完全明白你的意思,但如果你想在Ruby的字符串中找到单词count,你可以这样做:
str.scan(/\w+/).size
答案 1 :(得分:0)
您可以使用'each - do'迭代书中的所有片段:
class Book < ActiveRecord::Base
has_many :snippets
...
def get_word_count
@word_count = 0
self.snippets.each.do |c|
@word_count += c.content.scan(/\w+/).size
end
end
end
class Snippets < ActiveRecord::Base
belongs_to :book
...
end
扩展问题的UPD
您可以通过word_counts数组设置不同的word_count函数,然后使用:size
索引'em'
def get_word_count
#special word_counts for different sizes
wc_func = [];
wc_func[0] = { |cont| cont.length } # for size 0
wc_func[1] = { |cont| cont.scan(/\w+/).size } # for size 1
#word count
@word_count = 0
self.snippets.each.do |c|
@word_count += wc_func[@size][c.content]
end
end
或贯穿案件:
def get_word_count
case @size
when 0
wc_func = { |cont| cont.length } # for size 0
when 1
wc_func = { |cont| cont.scan(/\w+/).size } # for size 1
else
wc_func = { |cont| cont.length/2 + 5 } # for other sizes
end
#word count
@word_count = 0
self.snippets.each.do |c|
@word_count += wc_func[c.content]
end
end