Backbone.js Railsで使えるGem

backbone-relationalをJasmineでテストしてみた

投稿日:

github.com/PaulUithol/Backbone-relational

github.com/pivotal/jasmine

前提

Rails3.2でのJasmineの環境構築は

Rails3.2でJasmineをつかってCoffeeScriptをテスト~jasminerice

Backboneのモデルのテストは

Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる

 

Backbone.jsでモデル同士の関連性を簡単に実現するというbackbone-relationalを試してみた

サンプルはREADMEに載ってるそのままでユニットテストを作ってその機能を確かめてみる

backbone-relationalの設定

backbone-relationalでは Backbone.RelationalModelを継承する

 

typeは関連性を書く. Backbone.HasOneとかいう書き方と’HasOne’とかいう書き方がある

keyは参照先からの呼び出し方.この場合はpeson.get(‘user’)で関連先のインスタンスが呼び出せる

relationalModelは関連させたいモデル名.Backbone on Railsでは名前空間に注意

reverseRelationは逆からの参照.この場合はuser.get(‘person’)でこちらのインスタンスを呼び出せる.

なので関連先はなにも書かなくてOK

こちらはHasManyな場合、collectionTypeを指定するとHasManyの参照先がそのcollectionになる

そして、逆の参照のkeyを’livesIn’に指定しているので、person.get(‘livesIn’)で関連するHouseを逆に呼び出せる

includeInJSONを指定している なんかよくわかってない

 

*CoffeeScriptとの関係

一般的には継承は、underscoreのextendでやるけど、CoffeeScriptではextendsがあるのでそれを使っている

Backbone on railsもそれを前提にしているし、おおむね問題はない

ただ、backbone-relationalに関しては問題が出る場合があって、READMEの最後に注記がある

回避方法はModel.setup()を実行しておくこと

今回はあえて何も回避策を取らずにテストを進めたけど問題は特に出なかった

もしも、関連するデータが作成されない場合はこれを疑うといいかもしれない

 

テストと機能の説明

まずはHasOneな関係とPesonとUserの関係から

ここではPersonのインスタンスのpaul.get(‘user’)で関連先Userを呼び出して、さらにそのattributeをpaul.get(‘user’).get(‘login’)で呼んでいる

JasmineとBackboneの話になるけど、idを指定したらbeforeEachでこんなエラーが出た

afterEachすればいいのかと思ったけど、ダメだった

こちらはHasManyなPersonとHouseの関係

JSONの比較はtoEqualですよね

ここでやったことをまとめると

  • Houseから関連するPersonのインスタンスを呼び出せる
  • 相互参照してるので、Houseから関連するPersonを呼んで、さらに関連するHouseを呼べばもとの自分が返ってくる
  • もちろん逆にPersonからHouseも呼べる
  • toJSONすれば関連するモデルも含めてgenerateする(設定)
  • fetchRelatedで関連するモデルをfetchできる
  • 関連するモデルやコレクションへの追加や削除を監視するイベントを設定できる

 

今回はまだサーバーとの通信はみてない

-Backbone.js, Railsで使えるGem
-, ,

執筆者:

関連記事

Rails3.2とBackbone.jsでGoogle CalendarライクなカレンダーにCRUD(後編)~fullcalendar-rails

目次1  前回2 UPDATE1~バグの訂正3 UPDATE2 ~ ドラッグとリサイズでデータ更新4 DELETE~イベントの削除5 バグがあった → 解決しました!6  herokuにサンプルアップ …

RailsにTwitter Bootstrapのフォームを設定する~simple_form

環境 RailsにTwitter Bootstrapを設定する~twitter-bootstrap-rails github.com/plataformatec/simple_form 目次1 Gem …

状況に応じてRailsのフォームの種類を変える

  前提 railsでdocxを生成する動画 docxを生成するアプリは変数を自動で読み込むけど、状況に応じてフォームの種類を変えたい. Railsでは変数に応じてフォームの種類を用意してい …

Backbone.jsからRails3.2へのPUTに対して204(no content)が返ってくる問題

By: Bernardo Chang – CC BY 2.0   UPDATEするときRailsはデフォルトでJSONには何も返さないのがデフォルトぽい [crayon-599c …

RubyでTwitter〜twitter & t

By: Pete Simon – CC BY 2.0 目次1 はじめに2 twitter.gemのインストール3 Twitterアプリへの登録4 サンプルから試してみる5 cliでTwit …