如果用户属性为真,Rails 3会发送邮件程序?

时间:2013-03-28 21:42:24

标签: ruby-on-rails-3 devise actionmailer

每当在我的Rails 3应用程序中创建新记录时,我都会发送电子邮件。

def new_resource_notification(resource)
  @resource = resource
  mail(:to => "admin@domain.com", :bcc => User.all.map(&:email), :subject => "New item added")
end

资源控制器

# POST /resources
  # POST /resources.json
  def create
    @resource = Resource.create( params[:resource] )
    @resource.uploadedip_string = request.env['REMOTE_ADDR']

    respond_to do |format|
      if @resource.save

        UserMailer.new_resource_notification(@resource).deliver

        format.html { redirect_to @resource, notice: 'Resource was successfully created.' }
        format.json { render json: @resource, status: :created, location: @resource }
      else
        format.html { render action: "new" }
        format.json { render json: @resource.errors, status: :unprocessable_entity }
      end
    end
  end

我正在使用Devise进行用户身份验证,并添加了一个名为email_subscribe的字段。我还在用户配置文件视图中添加了一个简单的复选框,以启用和禁用订阅。

此刻一切正常。创建新记录时,所有用户都会收到电子邮件,用户可以设置和取消设置订阅。我现在要做的就是让两者一起工作。

如何仅向email_subscribe为true的用户发送电子邮件?

1 个答案:

答案 0 :(得分:1)

mails = User.where(:email_subscriber => true)
mail(:to => "admin@domain.com", :bcc => mails, subject => "New item added")