スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Rails+MongoでSexy Validationする方法

こんにちは。

最近社内ニートですることないのでRails+Mongoやってます。


Railsとか言ってるけどもともとPHPしかできないゆとりなんで、まず最初のRails+MySQLで色々つまづいたりもしてますが、私は元気です。

PHPer(しかも独自FW派)がRailsに惚れ込むまでのエントリを書きたいところですが、大長編になりそうなので今回はあんまり日本語のヘルプに引っかからなかったMongoでSexy Validationやる件についてはまりどころを書きます。

Rails3からSexy Validationが導入され、モデルに

validates :userid, :presence => true


みたいのを書けばバリデーションしてくれるようになりました。



なんて偉そうなこと書いてますが、そもそもRails2を知らないので、「一行書き足すだけでチェックしてくれるなんて超便利!」と素直に感動してますごめんなさい。

で、これを日本語化するには
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
をlocales/にぶち込めばいいっていうのが常識ですが、これだとフィールド名が日本語名にならないので別途ja.ymlで


  activerecord:
    attributes:
      hogehoge:
        userid: ユーザーアイディー


とかやります。


でもmongo_mapperはActiveRecordを使わないのでこれが使えません。
なのでまず使いたいモデルでValidationsが使えるよう、ActiveModel::alidationsをextendします。
たとえば今回はhogehogeモデルなので、モデルの先頭にこんな感じで追記します。


class Hogehoge
  include MongoMapper::Document
  extend ActiveModel::Validations ←追記した

  validates :userid, :presence => true ←Validation項目

  key :userid, String ←Mongoのドキュメント項目
end



次にlocale/ja.ymlのactiverecordの部分をmongo_mapperに書き換えます。(別にja.ymlじゃなくてもいい)


  mongo_mapper:
    attributes:
      hogehoge:
        userid: ユーザーアイディー



ほら、ちゃんと動いた!(画像略)

Rails+Mongoはあんまり日本語のヘルプがなくて困りますが、時間が余ってる時は英語のサイトを探しまくるのも楽しいです。

今回はstackoverflowの下のページを参考にしました。
http://stackoverflow.com/questions/3465481/whats-the-way-to-translate-model-attributes-in-rails-with-mongoid

これによればmongoid:で動いたよ!って言ってますがmongoidっていうgemがあるんですかね?


ゆとりだからわかんないや(^q^)



以上よろしくお願いいたします。
スポンサーサイト

-1 Comments

鳥之 says..."お久しぶりです"
X4Vbr216
ニュートリノの再実験の結果には本当に驚かされました。
しかし、私が本当に驚かされたのはそちらではなく、
こんな衝撃的な事が、身の回りで起きている事…
我々が知らない世界は、我々のすぐ側にあるのかもしれませんね
http://www.google.co.kr/search?q=%0A++%0D%0A%20%0D%0A%0A%20%0A%20+%0A%0D%0A%09%0D%0D%20+%09%09+site:%0A%EF%BD%87%09%0D%0A%0A%0A%EF%BD%81%09%EF%BD%8C%09%0A%0D%EF%BC%8D%EF%BD%81%09%09%0D%0D%EF%BD%98%09%EF%BD%99%EF%BC%8E%EF%BD%8E%EF%BD%85%EF%BD%94%09%09
2011.12.08 08:52 | URL | #- [edit]

Leave a reply






管理者にだけ表示を許可する

Trackbacks

trackbackURL:http://epigonen190.blog.fc2.com/tb.php/30-51b6be78
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。