我的一个字段总保存不到数据库中,给看一下

解决Teacher权限问题
本文探讨了一个关于Teacher模型在Ruby on Rails应用中权限设置的问题。在用户注册时,第一个注册的用户应该被赋予管理员权限(数值3),而后续注册的用户则获得默认权限(数值0)。然而,实际操作中发现@teacher.power字段始终存储为NULL。
看看这一段代码有什么问题么?我的@teacher.power保存到数据库总是NULL:
创建的代码:
[code]
def create
count = Teacher.count
if count == 0 #第一个注册者拥有最高权限3,自动为管理员
params[:teacher][:power] = 3
else
params[:teacher][:power] = 0 #其他的拥有最低权限0,等待管理员管理权限
end

@teacher = Teacher.new(params[:teacher])

if @teacher.save
flash[:notice] = "Teacher was successfully created"
redirect_to :action => :login
else
redirect_to :action => :new
end
end
[/code]
表单:
[code]
<%= error_messages_for 'teacher' %>

<table>
<tr>
<td><label for="teacher_name">姓名:</label></td>
<td><%= text_field 'teacher','name'%></td>
</tr>
<tr>
<td> <label for="teacher_display_name">昵称:</label></td>
<td><%= text_field 'teacher','display_name' %></td>
</tr>
<tr>
<td> <label for="teacher_password">密码:</label></td>
<td><%= password_field 'teacher','password' %></td>
</tr>
<tr>
<td> <label for="teacher_password_confirmation">再次输入密码:</label></td>
<td><%= password_field 'teacher','password_confirmation' %></td>
</tr>
<%= hidden_field 'teacher','power'%>
</table>
[/code]
数据库中Teachers的schema:
[code]
create_table "teachers", :force => true do |t|
t.column "name", :string
t.column "display_name", :string
t.column "password", :string
t.column "power", :integer
end
[/code]
`updateByPrimaryKey`通常是在ORM框架(如MyBatis、Hibernate等)中的一个常用操作,它用于更新数据库表中满足指定主键条件的记录。如果你想要将某个字段设为NULL,并保存数据库中,你可以这样做: 1. **使用SQL更新语句**: 在编写`updateByPrimaryKey`映射时,如果希望某字段变为NULL,直接在SQL语句中设置该字段为NULL,例如: ```sql UPDATE your_table SET column_to_null = NULL WHERE primary_key_column = :id; ``` 这里`your_table`是你需要更新的表名,`column_to_null`是要设为NULL的字段,`:id`是你的主键标识。 2. **在MyBatis XML映射文件**: 如果使用的是MyBatis,可以在`<update>`标签内添加`#{}`占位符来动态设置: ```xml <update id="updateWithNull" parameterType="YourModel"> UPDATE your_table SET column_to_null = #{columnToBeNull, jdbcType=INTEGER, nullValue=-1} WHERE primary_key_column = #{primaryKey, jdbcType=INTEGER} </update> ``` 其中`YourModel`是包含`columnToBeNull`属性的对象,`nullValue=-1`表示当为NULL时数据库会存储-1作为默认,实际应用中应根据需求调整。 3. **通过Java对象传参**: 在Java代码中,如果这个字段是个对象属性,可以将其置为`null`: ```java YourModel model = new YourModel(); model.setColumnToBeNull(null); yourMapper.updateWithNull(model); ``` 记得根据你的数据库配置和具体的ORM工具来调整上述示例。如果你的数据库不允许某个列存储NULL,那么在插入或更新前,你需要检查此字段是否允许NULL
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值