Ruby on rails 如何在注册表单期间拒绝空白和空属性?

Ruby on rails 如何在注册表单期间拒绝空白和空属性?,ruby-on-rails,rails-activerecord,hstore,Ruby On Rails,Rails Activerecord,Hstore,我有 型号 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

我有

型号

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用户value)
结束
结束
结束
控制器

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
class UsersController
通过客户端验证查看

<%= 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是
,如何实现这一点

第二个问题:我是否应该使用
create
操作来实现这一点?也许
update
会更清晰。但是这个表单也创建了一个用户对象


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

首先:要禁止使用空字符串更新字段,请将
allow\u blank:false
设置为
allow\u nil:false
。将这些添加到模型中的验证中

第二:不适用

第三:只需在模型中的电子邮件验证中添加
唯一性:true


阅读更多内容

但如果我希望存储在hstore data列中的所有属性都具有这种行为,该怎么办?您的原始帖子中没有这样的内容。我回答了你最初提出的问题。