如何通过ruby on rails自动将一些已处理的数据插入到另一个表中?

时间:2013-06-29 00:48:22

标签: mysql ruby-on-rails database

示例:

我有存款表=> deposit = $100date_added = Time.nowprofit_percent = 0.01user_id

过程=> profit = deposit * profit_percentdate = Time.now

earning_history Table => profitdateuser_id

我想每个月自动完成这个过程,并为所有成员插入收入历史记录。一个月基于date_added.1.month,因此对于任何成员都不同。耙子不适用于不经常工作。玉米的工作可能还可以,但我怎样才能将它用于所有具有不同日期和时间的成员!

任何人都可以帮助我,请详细指导我...任何插件建议,任何工作流程?


编辑:

看,我有accounts表>会员选择account

我有deposits表>会员存入amount

我有profits表>它在deposits中搜索并抓住amountdate_added,处理它并将profitdateTime.now)添加到{{1}表}

我怎么能说服务器自动为profits表执行此操作,抓取profits,处理它并将其添加到amount表中以供所有成员使用!我知道SQL代码也是ruby的,我只是不知道如何与服务器通信来做到这一点! 型号控制器?!

据我所知, MVC 浏览器发送命令profitscontroller连接controllermodel connect到model然后返回database然后controller然后浏览器

我只希望模型和数据库为我的应用程序执行此操作,而不是浏览器命令。 :-s

2 个答案:

答案 0 :(得分:0)

“每当”(https://github.com/javan/whenever)gem应解决您的问题。再看看Ryan Bates演唱的这个Rails:http://railscasts.com/episodes/164-cron-in-ruby

答案 1 :(得分:-1)

使用https://github.com/javan/whenever

每当schedule.rb

set :output, "somewhere/logs/cron.log"

#This will be executed everyday after midnight.

every :day, :at => '0:1am' do
  rake "process_monthly_earning"
end

process_monthly_earning.rake

implement your logic here

或者您可以在存款模型中实现after_save挂钩。

after_save :process_monthly_earning

private:

def process_monthly_earning
  if new_record?  #use it if then earnings are editable
    #check if any monthly earnings are there, if any then update else create
  else
    #adjust the earning
  end 
end