-1

我有

模型

class User < ActiveRecord::Base
  attr_accessible :email

  validates :email,
    presence: true

  serialize :data, ActiveRecord::Coders::Hstore

  %w[zipcode first_name].each do |key|
    attr_accessible key

    define_method(key) do
      data && data[key]
    end

    define_method("#{key}=") do |value|
      self.data = (data || {}).merge(key => value)
    end
  end
end

控制器

class UsersController < ApplicationController
  def create
    @user = User.find_or_initialize_by_email(params[:user][:email])

    if @user.update_attributes(params[:user])
      redirect_to :back, notice: "Thanks for sign up!"
    else
      render "pages/home"
    end
  end
end

使用客户端验证查看

<%= simple_form_for User.new, validate: true do |f| %>
  <%= f.input :email %>
  <%= f.input :first_name %>
  <%= f.input :zipcode %>
  <%= f.button :submit, 'Sign up' %>
<% end %>

第一个问题:我想更新现有用户记录,但如果 param 是""or则不更新" ",如何实现?

第二个问题:我应该使用create行动来做到这一点吗?也许update会更清楚。但是这个表单也创建了一个用户对象。

第三个问题:是否有机会向uniqueness电子邮件属性添加验证?现在我的客户端验证不允许这样做。

4

1 回答 1

1

第一:要禁止使用空字符串更新字段,设置allow_blank: false你也可以这样做allow_nil: false。将这些添加到模型中的验证中。

第二:不适用

第三:只需uniqueness: true在模型中添加电子邮件验证。

在这里阅读更多

于 2013-04-30T15:06:43.267 回答