1

我有一个注册表单,需要一个用于条款服务的复选框。我忘记在初始脚手架期间添加该列。之后我不做什么。请帮我解决问题。

4

3 回答 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 回答