作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何向现有数据库添加默认值为 false 的 bool 值 true false 列? (让我们说 user_agreement 的复选框)
我现有的表:
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
end
之后我应该做什么?我应该做这样的事情吗?
html:
<%= check_box_tag "user_agreement[]" %>
Controller :
if params[:user_agreement] == '1'
user = User.find_by_id(params[:id])
user.update_attribute(:user_agreement, true)
flash[:success] = "accepted agreement"
else
user = User.find_by_id(params[:id])
user.update_attribute(:user_agreement, false)
flash[:success] = "didn't accepted agreement"
end
最佳答案
首先,您需要运行迁移以将列 user_agreement
添加到您的 User 模型:
$ rake generate migration AddUserAgreementToUsers user_agreement:boolean
打开刚刚生成的迁移文件并添加默认值false
:
db/migrate/_add_user_agreement_to_users.rb
class AddUserAgreementToPeople < ActiveRecord::Migration
def change
add_column :people, :user_agreement, :boolean, default: false
end
end
运行迁移以对数据库进行更改:
$ rake db:migrate
app/controllers/users_controller.rb
如果您运行的是 Rails 4,则需要将 user_agreement
添加到您将接受的参数列表中:
private
def user_params
params.require(:user).permit(:name, :email, :user_agreement)
end
最后将 user_agreement
添加到您的表单中。
app/views/users/_form.html.erb
<%= form_for @user %>
...
<%= f.check_box :user_agreement %>
...
<% end %>
关于ruby-on-rails - Ruby Rails - 在现有数据库中添加一个 bool 复选框列以及我如何使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889353/
我是一名优秀的程序员,十分优秀!