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 次 |
| 最近记录: |