Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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_Ruby_Ruby On Rails 4_Impressions - Fatal编程技术网

Ruby on rails 从今天、昨天和本月开始计算印象,印象主义宝石

Ruby on rails 从今天、昨天和本月开始计算印象,印象主义宝石,ruby-on-rails,ruby,ruby-on-rails-4,impressions,Ruby On Rails,Ruby,Ruby On Rails 4,Impressions,我正在使用名为印象派的gem来记录ShowAction的页面视图 Everythink非常有效。我可以通过以下方式获得所有页面浏览量: @advertisement.impression_count 但现在我想能够过滤每个今天,昨天和这个月的浏览量 到目前为止,我提出了这个解决方案 @today = Impression.where( :conditions => { :created_at => Date.today...Date.today+1 }, :impresion

我正在使用名为印象派的gem来记录ShowAction的页面视图

Everythink非常有效。我可以通过以下方式获得所有页面浏览量:

@advertisement.impression_count
但现在我想能够过滤每个今天,昨天和这个月的浏览量

到目前为止,我提出了这个解决方案

 @today  =  Impression.where( :conditions => { :created_at => Date.today...Date.today+1 }, :impresionable_id =>@advertisement.id)
没有错误

然后,鉴于:

<%= "#{@today} views so far!" %>
然后我试了一下,但仍然有错误:

Mysql2::Error: Unknown column 'conditions.created_at' in 'where clause': SELECT COUNT(*) FROM `impressions`  WHERE (`conditions`.`created_at` >= '2014-12-18' AND `conditions`.`created_at` < '2014-12-19') AND `impressions`.`impresionable_id` = 127
有什么想法吗

提前谢谢

@today = Impression.where( :conditions => { :created_at => Date.today...Date.today+1 }, :impresionable_id =>@advertisement.id)
返回一个

试试这个:

@today = Impression.where(created_at: Date.today...Date.today+1, impresionable_id: @advertisement.id).count
返回一个

试试这个:

@today = Impression.where(created_at: Date.today...Date.today+1, impresionable_id: @advertisement.id).count

不需要条件散列

today = Date.today
range = today..today.next_day
@imp = Impression.where(created_at: range, impressionable_id: @advertisement.id)
如果@广告能给人留下印象,那么以下几点会更好:

@imp = @advertisement.impressions.where(created_at: range)
然后,要获得计数,您必须:

@today = @imp.count

另外,仅供参考,您可能需要使用DateTime.now而不是Date.today,因为您正在与DateTime字段(即在创建时)进行比较。

不需要条件散列

today = Date.today
range = today..today.next_day
@imp = Impression.where(created_at: range, impressionable_id: @advertisement.id)
如果@广告能给人留下印象,那么以下几点会更好:

@imp = @advertisement.impressions.where(created_at: range)
然后,要获得计数,您必须:

@today = @imp.count
另外,仅供参考,您可能需要使用DateTime.now而不是Date.today,因为您正在与DateTime字段(即在创建时)进行比较。

在impression.rb中添加作用域

您可以在任何需要的地方使用这些范围,按今天、昨天或本月的日期筛选印象。这比到处写where子句要好。

在impression.rb中添加作用域


您可以在任何需要的地方使用这些范围,按今天、昨天或本月的日期筛选印象。这比到处写where子句要好。

这比我想象的要容易

在advision.rb中

 has_many :impressions, :as=>:impressionable


     def view_count_yesterday
       impressions.where("created_at >= ? AND created_at < ?",                 1.day.ago.beginning_of_day, 1.day.ago.end_of_day).size

     end

      def view_count_today
        impressions.where("created_at >= ? AND created_at < ?", Time.now.beginning_of_day, Time.now.end_of_day).size
               # impressionist_count(:start_date => 1.day.ago)
     end

这比我想象的要容易

在advision.rb中

 has_many :impressions, :as=>:impressionable


     def view_count_yesterday
       impressions.where("created_at >= ? AND created_at < ?",                 1.day.ago.beginning_of_day, 1.day.ago.end_of_day).size

     end

      def view_count_today
        impressions.where("created_at >= ? AND created_at < ?", Time.now.beginning_of_day, Time.now.end_of_day).size
               # impressionist_count(:start_date => 1.day.ago)
     end

谢谢,但我没有印象模型?在那个例子中没有/印象。在哪里。。。说你有。无论如何,只需从gem中克隆它,或者创建一个并从gem的Impression模型继承方法。这是Impression.rb的内容:因此,您只需要在app/models中创建一个Impression.rb文件并将作用域放在那里。。应用程序将使用这个。好的,我按照你说的做了。但我得到了一个错误:广告控制器中的“未定义”方法!似乎示波器不工作:谢谢,但我没有印象模型?在那个例子中没有/印象。在哪里。。。说你有。无论如何,只需从gem中克隆它,或者创建一个并从gem的Impression模型继承方法。这是Impression.rb的内容:因此,您只需要在app/models中创建一个Impression.rb文件并将作用域放在那里。。应用程序将使用这个。好的,我按照你说的做了。但我得到了一个错误:广告控制器中的“未定义”方法!似乎作用域不起作用:我得到了这个错误:Mysql2::error:Unknown column'impressions.impressionable_id'在那里有轻微的打印错误。应该是印象。易受影响的。。。否则效果很好。我得到了这个错误:Mysql2::error:Unknown column'impressions.impressionable_id'Minor misprint。应该是印象。易受影响的。。。否则效果很好。