我有一个句子模型,它在body列中包含一个句子。每行只有一个句子很重要。但是,用户可以在表单中输入多个句子。不是问题。我其实想鼓励那个。
所以我需要做的就是分割句子,每行只保存一个句子。我能够很容易地在控制器中执行此操作(简单的.split(“。”)将执行此操作),但是随着时间的推移,这会变得有点难以维护。我真的觉得模型应该处理这个问题。
所以我在想的是在我的Sentence模型中做某种 before_save 钩子并在那里进行拆分。显然,这也会产生一些问题。
有更好的方法吗?
答案 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])