利用規約のチェックボックスが必要な登録フォームがあります。最初の足場でその列を追加するのを忘れていました。問題の解決を手伝ってください。
3 に答える
そのために、新しい移行を追加して、新しい列をブール値フィールドとして users テーブルに追加できます。 http://guides.rubyonrails.org/migrations.html
rails g migration AddTermsAcceptedToUsers
フォルダーに移行ファイルが作成されdb/migrate
ます。ここで、コードを追加する必要があります。
class AddTermsAcceptedToUsers < ActiveRecord::Migration
def change
add_column :users, :terms_accepted, :boolean, :default => false
end
end
次に、実行しますrake db:migrate
。
これで、users テーブルの列が になりましterms_accepted
た。次に、として追加しattr_accesible
ます。
attr_accessible :terms_accepted.
このフィールドを使用して、登録ページのチェックボックスとして表示します。
<%= f.check_box :terms_accepted%>
モデルの利用規約フィールドの属性アクセサーを作成できます。例えば
class User < ActiveRecod::Base
attr_accessor :terms_and_conditions
end
そして形で
<%=form_for(@user) do |f|%>
<%=f.check_box :terms_and_conditions %>
<% end %>
または
アクティブレコードの「承認」方法を利用できます。http://guides.rubyonrails.org/active_record_validations.htmlで方法を確認してください。
この検証は Web アプリケーションに非常に固有のものであり、この「承認」はデータベースのどこにも記録する必要はありません (そのためのフィールドがない場合、ヘルパーは単に仮想属性を作成します)。
class User < ActiveRecord::Base
validates :terms_and_conditions, acceptance: true
end
Bachans の回答を追加/更新するには、Rails 4 で次のようにします。
# User Controller
private
def user_params
params.require(:user).permit(:name, :email, :terms_accepted)
end
それ以外の
# User model
attr_accessible :terms_accepted
うまくいくことを願っています!