Gar*_*ett 3 activerecord ruby-on-rails
现在我正在尝试调用我的模型,并将其结果吐出为json/xml格式.我唯一的问题是,我的数据库关联没有被加载或查询.
通常,我可以运行它
@campaign = Campaign.find(:all)
然后通过调用@campaign[0].hits
来获取点击次数has_many :hits
.
但是如果你调试输出,它只调用表上的列.你会如何将它与你的查询放在一起?
例如:
<campaign> <category>website</category> <created-at type="timestamp">2009-01-24 14:49:02 -0800</created-at> <end-at type="date">2009-01-24</end-at> <id type="integer">14</id> <is-watched type="integer">1</is-watched> <name>Lets</name> <slug>c5334415da5c89384e42ce6d72609dda</slug> <start-at type="date">2009-01-24</start-at> <user-id type="integer">5</user-id> </campaign>
然后让它改为添加另一列,但是有点击次数.
<campaign> <category>website</category> <created-at type="timestamp">2009-01-24 14:49:02 -0800</created-at> <end-at type="date">2009-01-24</end-at> <id type="integer">14</id> <is-watched type="integer">1</is-watched> <name>Lets</name> <slug>c5334415da5c89384e42ce6d72609dda</slug> <start-at type="date">2009-01-24</start-at> <user-id type="integer">5</user-id> <hits type="integer">123412</hits> </campaign>
ActiveRecord find()系列采用:include选项,允许您急切加载关联.
所以你需要做的就是:
@campaign = Campaign.find(:all,:include =>:hits)
以上将急于加载您的数据库调用,以便访问每个索引[0].[1]等不会发出自己的SELECT调用.你打电话的时候
@campaign [0] .to_json
然后它不会包含任何关联,例如"命中",那么你还需要:将它包含在to_json调用中,例如
@campaign [0] .to_json(:include =>:hits)
归档时间: |
|
查看次数: |
1919 次 |
最近记录: |