过滤传入的数据

时间:2011-03-29 05:55:19

标签: ruby-on-rails ruby api

我有一个句子模型,它在body列中包含一个句子。每行只有一个句子很重要。但是,用户可以在表单中输入多个句子。不是问题。我其实想鼓励那个。

所以我需要做的就是分割句子,每行只保存一个句子。我能够很容易地在控制器中执行此操作(简单的.split(“。”)将执行此操作),但是随着时间的推移,这会变得有点难以维护。我真的觉得模型应该处理这个问题。

所以我在想的是在我的Sentence模型中做某种 before_save 钩子并在那里进行拆分。显然,这也会产生一些问题。

有更好的方法吗?

1 个答案:

答案 0 :(得分: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])