railsしりとり modelのvalidatesでできた

http://shokai.mag.keio.ac.jp:3000/words
のNewWordから投稿できる。しばらく動かしておいてみる
modelの入力値をチェックするvalidateで実装した

class Word < ActiveRecord::Base
  validates_presence_of :item, :message => '入力されていません'
  validates_uniqueness_of :item, :message => 'すでに使われた言葉です'
  def validate
    w = Word.find(:first, :order => "id DESC")
    return if w == nil # 初投稿の時
    if item[0] =~ w.item[-1,1] # 最後の文字が同じか?
      errors.add(:item, "しりとりしてください。前の人は#{w.item}です")
    end
    if item =~ /.*[んン]$/
      errors.add(:item, "負けを認めてください")
    end
  end
end

参考:Module: ActiveRecord::Validations::ClassMethods
http://wota.jp/ac/?date=20050802#p01
http://jp.rubyist.net/magazine/?0006-RubyOnRails

あと、http://shokai.mag.keio.ac.jp:3000/words.xml とかから簡単にxmlで取得できるのが良いですね