2011-03-29 31 views
0

我有一个句子模型将包含在正文栏中的单个句子。每行只有一个句子是很重要的。但是,用户可以在表单中输入多个句子。不是问题。我其实想要鼓励。过滤传入数据

所以我需要做的是拆分句子,并保存每行只有一个句子。我能够很容易地在控制器中执行此操作(一个简单的.split(“。”)就可以做到这一点),但是这会在一段时间后变得有点不可维护。我真的觉得模型应该处理这个。

所以我在想什么是做一些before_save钩在我的句型模型,并在那里做分割。显然这也会造成一些问题。

有没有更好的方法来做到这一点?

+1

确定分裂上''。''就足够了?句子也可以用'!'和''?'结尾。 – 2011-03-29 06:53:50

+0

是的,我将不得不拆分多个不同的商标。但我正在处理的主要问题是我在哪个层面分割。但谢谢你指出。我很感激。 – 2011-03-29 15:09:10

回答

2

我会把它折射到一个类的方法,如:

半伪代码:

class Sentence << ActiveRecord::Base 

    def self.split_into_sentences(input) 
    input.split(".") 
    end 

    def self.create_sentences_from_body(body) 
    split_into_sentences(body).each{|s| Sentence.create(:body => s)} 
    end 

end 

所以,你可以在你的控制器拨打:

Sentence.create_sentences_from_body(params[:text])