Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 协会的业绩更好_Ruby On Rails_Activerecord_Associations - Fatal编程技术网

Ruby on rails 协会的业绩更好

Ruby on rails 协会的业绩更好,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,现在我有一个叫做“活动”的表格,有很多点击率,如果我打电话说: Campaign.find(30).hits 任何建议都很好 我的ActiveRecord可能有点生锈,请原谅,但IIRCCampaign.find(30).hits至少是两个独立的查询。Campaign.find(30,:include=>[:hits])。hits如何做?应该执行单个查询。那么: Campaign.find(30).hits.count 你也可以考虑在命中。RB < /代码>中添加以下内容(假设战役和命中之间的

现在我有一个叫做“活动”的表格,有很多点击率,如果我打电话说:

Campaign.find(30).hits
任何建议都很好

我的ActiveRecord可能有点生锈,请原谅,但IIRC
Campaign.find(30).hits
至少是两个独立的查询。
Campaign.find(30,:include=>[:hits])。hits如何做?应该执行单个查询。

那么:

Campaign.find(30).hits.count

你也可以考虑在<代码>命中。RB < /代码>中添加以下内容(假设战役和命中之间的一对多关系)。

然后,您需要在
活动
表中有一个名为
点击次数
的列。如果您只获得计数,则这将避免完全命中
命中


您可以检查完整的运行情况。

未定义错误,它不应该知道如何找到30 ID。我相信在这种情况下它也会这样做。无论如何,这里的两个查询会更有效,因为您不希望它将所有点击加入到活动行中。基本上你只需要“WHERE campaign_id=30” def self.total_hits find :first, :select => 'COUNT(id) as hits', :conditions => ["campaign_id = ?", self.id] end def self.hits Rails.cache.fetch("Campaign_Hits_#{self.campaign_id}", :expires_in => 40) { find(:first, :select => 'COUNT(id) as hits', :conditions => ["campaign_id = ?", self.campaign_id]).hits } end
Campaign.find(30).hits.count
belongs_to :campaign, :counter_cache => true