ruby-on-rails – 使用站点更新Ruby on Rails向帐户用户发送每日
我正在尝试在我的应用程序中设置一些内容,每天向所有用户发送每日电子邮件,并为其帐户创建新闻帖子.
我已经有了CRON任务设置,但我不太了解ActionMailer,以了解如何向每个用户发送特定信息…… 在我的应用中,用户属于帐户,帐户有很多用户,用户有很多想法,帐户通过用户有很多想法. 因此,如果帐户1有3个用户,那么每天我希望所有三个用户通过电子邮件在最后一天收到新的想法. 我知道这很复杂,但如果有人可以帮助一个起点,我将不胜感激. 干杯 编辑以包含来自模型的代码: class Account < ActiveRecord::Base has_many :users has_many :ideas,:through => :users class User < ActiveRecord::Base belongs_to :account has_many :ideas,:dependent => :destroy 我基本上希望将这个源从索引页面发送到每日电子邮件中的每个用户: <strong>Here are some of your colleagues recent ideas:</strong> <% @ideas.each do |idea| %> #@ideas = Account.ideas <% if idea.created_at > 4.hours.ago %> <table class="microposts" summary="User microposts"> <tr> <td class="micropost"> <span class="ideatitle"><%= idea.title %></span><br /> <span class="ideacontent"><%= idea.content %></span> <span class="timestamp"> Conceived <%= time_ago_in_words(idea.created_at) %> ago. </span> </td> <td> 再次感谢! 解决方法
它将是如下(没有代码就无法获得):
daily.rake – 你的佣金任务每天通过cron调用 namespace :daily do desc "run daily tasks" task :daily,:needs => :environment do Account.each do |account| account.users.each do |user| UserMailer.deliver_daily_email(user) end end end user_mailer.rb – 您的动作邮件程序,用于发送实际的电子邮件 UserMailer < ActiveMailer::Base def daily_email(user) @recipients = "#{user.email}" @from = "my@email" headers "Reply-to" => "my@email" @subject = "Your daily message" @sent_on = Time.now @body[:user] = user end end daily_email.text.html.erb – 电子邮件的实际内容 <h2>Hi <%=h @user.name %></h2> You like: <ul> <% @user.account.ideas.each do |idea| %> <li><%=h idea.title %></li> <% end %> </ul> -sincerely,the mailer server 希望这能让您对如何配置它们有所了解.如果有什么问题在这里让我知道.请享用! [编辑] 如下面的Josh Pinter所述,您可能只想向用户发送新想法(在过去24小时内创建,或跟踪用户看到的想法并排除电子邮件中的想法).您可以通过idea.rb中的范围执行此操作 scope :recent,-> { where("created_at < ",1.day.ago) } 要么 # Note,you'll need to create and maintain a `viewed_at` column scope :unviewed,-> { where(viewed_at: nil) } 然后,对于每个用户,您可以检查 ideas = user.ideas.recent.any?并且只有在有最近或未审查的想法时才发送电子邮件.发送电子邮件后,您可以通过运行ideas.update_all(seen_at:Time.now)设置查看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |