电子邮件收集器/实施

时间:2010-06-12 02:43:13

标签: ruby-on-rails

我正在实施一个简单的RoR网页,该网页收集访问者的电子邮件并将其存储为对象。

我正在使用它作为试用RoR和BDD的迷你项目。我可以想到Cucumber的3个功能: 1.用户提交有效的电子邮件地址 2.用户提交现有的电子邮件地址 3.用户提交无效的电子邮件

我的问题是,对于方案2和3,通过控制器处理这个问题会更好吗?或作为课堂上的方法?如果在sceanrio 2或3中实例化实例,可能会抛出错误?

实施如下,除了上述问题的答案之外,还喜欢听一些代码评论。谢谢!


MODEL:

class Contact < ActiveRecord::Base
    attr_accessor :email
end

查看:

<h1>Welcome To My Experiment</h1>
<p>Find me in app/views/welcome/index.html.erb</p>

<%= flash[:notice] %>

<% form_for @contact, :url => {:action => "index"} do |f| %>
<%= f.label :email %><br />
<%= f.text_field :email %>
<%= submit_tag 'Submit' %>
<% end %>

控制器:

class WelcomeController < ApplicationController
  def index
    @contact = Contact.new
    unless params[:contact].nil?
      @contact = Contact.create!(params[:contact])
      flash[:notice] = "Thank you for your interest, please check your mailbox for confirmation"
    end  
  end
end

2 个答案:

答案 0 :(得分:1)

要执行最后两个步骤,我建议您使用rails validations 。例如,尝试将模型更新为如下所示:

class Contact < ActiveRecord::Base

  attr_accessor :email

  validates_uniqueness_of :email
  validates_format_of :email, :with => /\A(\S+)@(\S+)\Z/i

end

答案 1 :(得分:0)

另一方面,将从“params”返回的值批量分配给模型被认为是不好的做法。它确实允许狡猾的人有时会对你的系统做出令人讨厌的事情。

相关问题