私は持っている
モデル
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 が""
または" "
の場合はそうではありません。これを達成するにはどうすればよいですか?
2 番目の質問:そのためcreate
にアクションを使用する必要がありますか? 多分update
もっと明確になるでしょう。ただし、このフォームはユーザー オブジェクトも作成します。
3 番目の質問:uniqueness
電子メール属性に検証を追加する機会はありますか? 現在、私のクライアント側の検証では、それが許可されていません。