2007-04-28
我的一个字段总保存不到数据库中,给看一下
看看这一段代码有什么问题么?我的@teacher.power保存到数据库总是NULL:
创建的代码:
表单:
数据库中Teachers的schema:
创建的代码:
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
表单:
<%= 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>
数据库中Teachers的schema:
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
- 19:05
- 浏览 (994)
- 评论 (8)
- 分类: Ruby on rails
- 进入论坛
- 相关推荐
评论
fuliang
2007-04-30
youngng 写道
fuliang 写道
youngng 写道
楼主这个也太无聊了, 何苦为了只有一次的情况去弄一个if-else
你就不能在deploy的时候直接插入第一条记录??????
你就不能在deploy的时候直接插入第一条记录??????
这样也是,省着查询和判断,我本来也是想这么做的,关键是做毕业设计,
答辩的时候得把这个部署到实验室的机器上演示,由于有很多模块,部
署的时候很容易忘了这些小的细节,而使这部分的功能不好用。
我这么做主要想让部署方便些,况且这点在性能上也不会带来什么的影响。
自动生成admin更方便吧, 又不是要你去手动用mysql插入数据.你不是用rake db:migrate的么? 在那些文件
里写上一条插入语句就行了.你忘记不要紧, 文件是不会忘记的. 这样一来, 你还减少一个部署步骤了.
而且,自动生成一个admin用户, 这种做法是十分常见的, 这跟你设置一些初始化数据一样的. 因为admin是
一个特殊角色, 你没必要,也不该像一般用户那样去对待它. 完全可以把它当成系统的一部分.
在migration中写插入一个admin,我怕安全上有问题,因为你需要在migration中插入包括密码等
一些敏感数据,这样会暴露admin的信息特别是密码,而在数据库中密码是已经加密的。所以我觉
得在migration做插入一些测试数据的操作可以,像插入admin我感觉不是上策。
youngng
2007-04-29
fuliang 写道
youngng 写道
楼主这个也太无聊了, 何苦为了只有一次的情况去弄一个if-else
你就不能在deploy的时候直接插入第一条记录??????
你就不能在deploy的时候直接插入第一条记录??????
这样也是,省着查询和判断,我本来也是想这么做的,关键是做毕业设计,
答辩的时候得把这个部署到实验室的机器上演示,由于有很多模块,部
署的时候很容易忘了这些小的细节,而使这部分的功能不好用。
我这么做主要想让部署方便些,况且这点在性能上也不会带来什么的影响。
自动生成admin更方便吧, 又不是要你去手动用mysql插入数据.你不是用rake db:migrate的么? 在那些文件
里写上一条插入语句就行了.你忘记不要紧, 文件是不会忘记的. 这样一来, 你还减少一个部署步骤了.
而且,自动生成一个admin用户, 这种做法是十分常见的, 这跟你设置一些初始化数据一样的. 因为admin是
一个特殊角色, 你没必要,也不该像一般用户那样去对待它. 完全可以把它当成系统的一部分.
fuliang
2007-04-29
youngng 写道
楼主这个也太无聊了, 何苦为了只有一次的情况去弄一个if-else
你就不能在deploy的时候直接插入第一条记录??????
你就不能在deploy的时候直接插入第一条记录??????
这样也是,省着查询和判断,我本来也是想这么做的,关键是做毕业设计,
答辩的时候得把这个部署到实验室的机器上演示,由于有很多模块,部
署的时候很容易忘了这些小的细节,而使这部分的功能不好用。
我这么做主要想让部署方便些,况且这点在性能上也不会带来什么的影响。
youngng
2007-04-29
楼主这个也太无聊了, 何苦为了只有一次的情况去弄一个if-else
你就不能在deploy的时候直接插入第一条记录??????
你就不能在deploy的时候直接插入第一条记录??????
yananay
2007-04-28
@teacher = Teacher.new(params[:teacher]) if Teacher.count==0 then @teacher.power = 3 else @teacher.power = 0 end
我觉得这样也可以.
改变 params 不行,我觉得是 params 是只能读的,改是无效的.
fuliang
2007-04-28
gigix 写道
I'm just wondering why do you do that...
Furthermore, the second line should be in the Teacher class.
@teacher = Teacher.new(params[:teacher]) teacher.power = 3 if Teacher.count == 0
Furthermore, the second line should be in the Teacher class.
我像你说的那样重构了一下:
Teacher中增加了:
def init_power
if Teacher.count == 0
self.power = 3
else
self.power = 0
end
end
原来的create修改成这样的:
def create
@teacher = Teacher.new(params[:teacher])
@teacher.init_power
if @teacher.save
flash[:notice] = "Teacher was successfully created"
redirect_to :action => :login
else
redirect_to :action => :new
end
end
结果成功了。不过还不明白为什么?
fuliang
2007-04-28
gigix 写道
I'm just wondering why do you do that...
Furthermore, the second line should be in the Teacher class.
@teacher = Teacher.new(params[:teacher]) teacher.power = 3 if Teacher.count == 0
Furthermore, the second line should be in the Teacher class.
我开始这么写的
不过也没有保存上
我看日志中产生一个sql:
SELECT * FROM teachers WHERE (teachers.name = 'fuliang') LIMIT 1
我觉得teacher.power不应该去查询,但我确实不知道为什么有这个查询
我于是修改了params,然后再new
但现在还有这么一句sql
gigix
2007-04-28
I'm just wondering why do you do that...
Furthermore, the second line should be in the Teacher class.
@teacher = Teacher.new(params[:teacher]) teacher.power = 3 if Teacher.count == 0
Furthermore, the second line should be in the Teacher class.
- 浏览: 52491 次
- 性别:

- 来自: 长春

- 详细资料
搜索本博客
我的相册
RSS Reader1
共 6 张
共 6 张
链接
最新评论
-
写了一个支持搜索并下载歌 ...
引用 为什么要配置成legal_music_link=http://202.10 ...
-- by fuliang -
使用Struts2+Hibernate+Sp ...
很好很强大
-- by andy54321 -
Java Persistence with Hi ...
昨天买的, 不错
-- by lklkdawei -
使用Struts2+Spring+Hiber ...
不过整个工程都没有一条注释啊。。。 这个比较郁闷,万一以后你写了个框架,那下面 ...
-- by yyphzc -
使用Struts2+Spring+Hiber ...
总体感觉还行,不过部分代码需要优化为好 1.DAO既然使用泛型,那就干脆点。想想 ...
-- by yeshucheng






评论排行榜