ãããªæãã®æç¨¿ã·ã¹ãã ããã£ãã¨ãã¾ã
sqlite> .tables
comments posts
ããsqlite3ã«ã¯ mysql ã¨ãã® describe ç¸å½ã®ã³ãã³ããç¡ãã®ã ãããã
ã¨ãããããã¼ã¿ãçªã£è¾¼ãã select ã§åå¼ãã¦ãã
id|title|body|created_at|updated_at 1|title1|body|2010-09-25 05:55:18.912592|2010-09-25 05:55:18.912592 2|title2|body|2010-09-25 05:55:31.281979|2010-09-25 05:55:31.281979
ããããããã°ã®ã¨ã³ããªçãªãã®ãæ³å®ãã¦ãtitleã¨bodyã£ã¦ããã«ã©ã ãããã
ããã¦ããã®åã¨ã³ããªã«commentãä»ãã
id|post_id|name|body|created_at|updated_at 1|1|hogehoge|comment1|2010-09-25 05:57:32.057127|2010-09-25 05:57:32.057127 2|1|hogehoge|comment2|2010-09-25 05:57:39.476946|2010-09-25 05:57:39.476946 3|1|hogehoge|comment3|2010-09-25 05:57:42.828758|2010-09-25 05:57:42.828758 4|2|unko|comment1|2010-09-25 05:57:53.740980|2010-09-25 05:57:53.740980 5|2|hogehoge|comment2|2010-09-25 05:58:03.020882|2010-09-25 05:58:03.020882
ã³ã¡ã³ãã«ã¯ã対象ã¨ãªã post_id ããã£ã¦ç´ä»ããããã
ã¢ãã«ã§ã®é¢é£ä»ã
vim app/models/post.rb
has_manyãä»ãã
class Post < ActiveRecord::Base has_many :comments end
rails console ã§ä»¥ä¸ã®ããã«è©¦ãã¨ãã³ã¡ã³ããã¼ã¿ãåããã
Post.find(1).comments
=> [#, # , # ]
æç¨¿ã¡ãã»ã¼ã¸ã«ã³ã¡ã³ãæ°ãã¤ããã
ãããã commnet(1) ã¨ããã¤ãããå ´åãã
ä¸è¨ã試ãã¦ããã°ã
Post.find(1).comments.length
ã¨ãã§åãã訳ã ãã©ãjson ãªã©ã§æ¸¡ãã¨ãã«ä¸é½åã§ãããã
ã¾ããã¢ãã«ã«ã¡ã½ãããå®ç¾©ãã
ä¸å¿ãä½åãå¼ã°ããã¨ãã®çºã«ãã£ãã·ã¥ãã¦ããã
class Post < ActiveRecord::Base has_many :comments def comment_count @comment_count ||= comments.length end end
rails console ã§ç¢ºèªãã¦ã¿ããã
ruby-1.9.2-head > Post.find(1).comment_count
=> 3
ãããã§ãã¦ãã
to_json(to_xml)ã§ã¡ã½ããå¼ã³åºãããã
:methods ãªãã·ã§ã³ã§å¼ã¹ãã
ruby-1.9.2-head > puts post.to_json(:methods => :comment_count)
{"post":{"body":"body","created_at":"2010-09-25T05:55:18Z","id":1,"title":"title1","updated_at":"2010-09-25T05:55:18Z","comment_count":3}}
æ´å½¢ããã¨ãããªæãã§ãæå¾ã« comment_count ã£ã¦ããã®ãä»ã
{ post: { body: body (string) ,created_at: 2010-09-25T05:55:18Z (string) ,id: 1 (number) ,title: title1 (string) ,updated_at: 2010-09-25T05:55:18Z (string) ,comment_count: 3 (number) } }
æ´å½¢ã¯ä¾ã®ãã¨ã JSON整形 ã使ã£ãã
ã¡ãªã¿ã«ã:methods ã§è¤æ°ã®ã¡ã½ãããå¼ã³ããå ´å㯠[:methodå, :methodå]ã®ãããªæãã§é
åã«ããã¨è¯ãã
ããã§
ãã¼ã¿ãå¼ãåããã«åºåç¨ã®å½¢å¼ã«æ´å½¢ã§ãã¾ããã
enjoy!