不确定如何填写缺少的参数

时间:2014-05-10 07:31:33

标签: ruby-on-rails ruby

此方法在tutor_session模型中

 def self.tutor_minutes_ranking(users, start_date, end_date)
     joins(:session_users)
     .select('session_users.user_id, SUM(session_length)')
     .where("session_users.user_id IN (?) and tutor_sessions.created_at > ? and tutor_sessions.created_at < ?", users, start_date.to_datetime, end_date.to_datetime)
     .group('session_users.user_id')
     .sum(:session_length, :order => 'sum_session_length DESC')
 end

好的,试着在

中获得总分钟数

这个方法不是我写的。

但我正在尝试使用它,所以我可以显示总数。

这就是我在不同的控制器中所拥有的(即不是tutor_session控制器):

    @total_minutes_month = TutorSession.total_minutes_for_user(current_user)

这就是我在视图中所拥有的:

<% @total_minutes_month.each do |i| %>
   <%= i.first %>
<% end %> 

这是出现的错误:

wrong number of arguments (1 for 3)

显然,我没有填写方法中显示的第二个或第三个参数的参数。

问题是,我不确定如何填写start_date和end_date。

么?

2 个答案:

答案 0 :(得分:2)

请尝试本月的总时间:

TutorSession.total_minutes_for_user(current_user, 
                                    Time.now.beginning_of_month, 
                                    Time.now)

上个月这样的事情:

TutorSession.total_minutes_for_user(current_user, 
                                    1.month.ago.beginning_of_month, 
                                    1.month.ago.end_of_month)

答案 1 :(得分:1)

@spickermann的答案是正确的,可以解决您的arguments错误


但是,当您提及undefined_method语句时出现.each错误时,问题将由@total_minutes_month0的值引起 - 意味着没有array / hash循环

如果您想要显示现有方法中的数据,那么您最好做以下事情:

#app/views/controller/view.html.erb
<%= @total_minutes_month #-> should display total minutes for user %>

我个人将该方法附加到user模型的关联,因此您可以致电current_user.tutor_sessions.first.total_minutes_month

#app/models/user.rb
Class User < ActiveRecord::Base
   has_many :tutor_sessions, through :session_users do
       def self.tutor_minutes_month(start, end)
           joins(:session_users)
          .select('session_users.user_id, SUM(session_length)')
          .where("session_users.user_id IN (?) and tutor_sessions.created_at > ? and tutor_sessions.created_at < ?", id, start.to_datetime, end.to_datetime)
          .group('session_users.user_id')
          .sum(:session_length, :order => 'sum_session_length DESC')
       end
   end
end

这样的话会让你致电current_user.tutor_sessions.first.total_minutes_month给你每个导师会议的会议记录