我有一个包含大量任务的应用程序,每天我都想运行一个cron作业,为数据库中的每个Task创建一个DayTask.任务has_many DayTasks和这些daytasks是用户每天将要检查的.我正在使用随时随地的宝石,但它似乎根本没有运行.有任何想法吗?
配置/ schedule.rb
every 1.day, :at => "12:01am" do
runner "Task.generate_tasks_for_day"
end
Run Code Online (Sandbox Code Playgroud)
Task.rb
def generate_tasks_for_day
Task.all.each do |task|
task.day_tasks.create(:target_date => Date.today)
end
end
Run Code Online (Sandbox Code Playgroud)
运行'when命令'的结果
1 0 * * * /bin/bash -l -c 'cd /home/grant/rails_projects/GoalTwist && script/rails runner -e production '\''Task.generate_tasks_for_day'\'''
Run Code Online (Sandbox Code Playgroud)
注意:每次我想测试运行时,我一直在更改config/schedule.rb中的时间.
我有如下模型:用户has_many目标,目标has_many任务,任务has_many day_tasks.我正在尝试编写一个找到所有day_tasks的方法
:target_date == Date.today(target_date处于day_tasks表中的列).我想把结果放到@day_tasks数组中.
我的代码:
@user = current_user
@day_tasks = DayTask.find { |x| x.task.goal.user == @user && x.target_date == Date.today }
Run Code Online (Sandbox Code Playgroud)
此代码仅返回符合这些条件的第一条记录.我也尝试使用DayTasks.where方法在大括号中使用相同的代码,但我只是"错误的参数数量(0表示1)"错误.有人可以解释为什么我的方法只返回第一次出现以及.find和.where之间究竟有什么区别?
我正在制作一个具有以下属性的应用程序,我正在创建一个单一的表单,以便能够保存一个目标、一个目标的任务、一个目标的里程碑和一个里程碑的任务。
#app/models/goal.rb
has_many :tasks, :as => :achievement
has_many :milestones
accepts_nested_attributes_for :tasks
accepts_nested_attributes_for :milestones
#app/models/milestone.rb
belongs_to :goal
has_many :tasks, :as => :achievement
#app/models/task.rb
belongs_to :achievement, :polymorphic => true
Run Code Online (Sandbox Code Playgroud)
每当我用它的属性保存目标时,任务模型似乎对它们属于什么成就类型感到困惑,导致每个里程碑任务都被列为目标任务。我的表单、部分和控制器代码如下。
形式:
<%= nested_form_for @goal do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= render 'shared/goal_fields', :f => f %>
<%= f.fields_for :milestones do |ff| %>
<%= render 'shared/milestone_fields', :f => ff %>
<% end %>
<%= f.fields_for :tasks do |ff| %>
<%= render 'shared/task_fields', :f => ff %>
<% end …Run Code Online (Sandbox Code Playgroud) ruby-on-rails nested-forms form-for polymorphic-associations ruby-on-rails-3
我正在尝试测试是否使用某些值调用 pandas 方法。
然而,仅仅通过应用 @patch 装饰器就会导致修补的方法在 pandas 中抛出 a ValueError,而实际方法不会。我只是想测试正在Stock.calc_sma调用底层pandas.rolling_mean函数。
我假设@patch装饰器基本上向我正在修补的东西添加了一些“神奇”方法,这些方法允许我检查函数是否被调用。如果是这种情况,为什么pandas.rolling_mean无论修补与未修补该函数的行为不一样?
应用程序/模型.py
import pandas as pd
class Stock: # i've excluded a bunch of class methods, including the one that sets self.data, which is a DataFrame of stock prices.
def calc_sma(self, num_days)
if self.data.shape[0] > num_days: # Stock.data holds a DataFrame of stock prices
column_title = 'sma' + str(num_days)
self.data[column_title] = pd.rolling_mean(self.data['Adj Close'], num_days)
Run Code Online (Sandbox Code Playgroud)
应用程序/测试/TestStockModel.py
def setUp(self):
self.stock = MagicMock(Stock)
self.stock.ticker …Run Code Online (Sandbox Code Playgroud)