我有
模型
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
电子邮件属性添加验证?现在我的客户端验证不允许这样做。