我有一个注册表单,需要一个用于条款服务的复选框。我忘记在初始脚手架期间添加该列。之后我不做什么。请帮我解决问题。
问问题
2194 次
3 回答
2
为此,您可以添加新迁移以将新列作为布尔字段添加到用户表中。 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
。
现在您的用户表有一个列作为terms_accepted
. 然后将其添加为attr_accesible
.
attr_accessible :terms_accepted.
现在使用此字段并将其显示为注册页面中的复选框。
<%= f.check_box :terms_accepted%>
于 2013-07-22T05:51:25.677 回答
1
您可以为模型中的条款和条件字段创建属性访问器。例如
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
于 2013-07-22T05:51:44.427 回答
0
要添加/更新 Bachans 的答案,在 Rails 4 中你会这样做:
# User Controller
private
def user_params
params.require(:user).permit(:name, :email, :terms_accepted)
end
代替
# User model
attr_accessible :terms_accepted
我希望这行得通!
于 2013-07-22T07:41:45.317 回答