当前位置: 代码迷 >> 综合 >> rails ActiveRecord 操作数据库
  详细解决方案

rails ActiveRecord 操作数据库

热度:15   发布时间:2023-12-09 09:02:34.0


RAILS3  ActiveRecord 操作数据库

rails ActiveRecord 操作数据库(CRUD)


C

添加记录
(1) new 和 save
user = User.new
user.name = value1
user.password = value2
user.save


(2) create 下面增加了两条记录
User.create([{:name=>value1,:password=>value2},{:name=>value3,:password=>value4}])


使用 块 作为构造参数 添加记录
User.new do |f|
f.name = value1
f.password = value2
f.save
end


使用 Hash对象 作为构造参数 添加记录
user=User.new(
:name=>value1,
:password=>value2
)
user.save



R


根据一个字段指定的名称查询
mymessage = Message.find(:all,:conditions=>["user_id=?",session[:user_id]])
查询messages表中user_id为session[:user_id]值的对象


实例:

LineItem<id:integer  cart_id:integer product_id:integer>查询cart_id=2的所有记录,怎么查呢?

LineItem.find(:all, :conditions => ["cart_id=?",2])



根据主键的id查询
user = User.find(1)
查询users表中主键id为1的User对象
user.name 即可得到该对象的name值
user.password 即可得到该对象的password值


查询两个字段
User.find(:all,:conditions=>["name=? and password=?",name,password])


查询全部记录
User.find(:all) 或者 User.all

取得某一对象name字段值
User.find(params[:id]).name

Select :

根据 id 查询 数据记录集

vo = Post.find :all , :conditions => ["type = 'BlogPost' "]
vo2 = Comment.find :all , :conditions => ["commentable_type = 'Post' "]
Activity.find(:all,
:conditions => ["activities.item_id in (?) and item_type = 'Post' or activities.item_id in (?) and item_type = 'Comment' ",vo.map(&:id).uniq , vo2.map(&:id).uniq],
:order => 'activities.created_at DESC',
:limit => GLOBAL_FEED_SIZE
)


上述查询结果为 : select 出 activities表的item_type = Post 并且 item_id 在vo记录集 中 加上 item_type = Comment 并且 item_id 在vo2记录集 中,




U


更新记录
@message = Message.update(params[:id],:detail=>params[:message][:detail])
其中params[:id] 取得的是主键id,由表单提交时的 :id参数传过来

ClientInfo.update_all("password ="+"'"+password.to_s+"'","email= "+"'"+email.to_s+"'");

update_all(" status = '1' ",
"client_info_id = #{id} and status = 0"
)

find(:first,:conditions=>["client_id=? and name='投资组合'",value1]).update_attributes(
:status=>value2)

Order . find ( 12 ). update_attributes (: name => "Barney" , : email => "barney@bedrock.com" )

根据条件update


D

删除记录
message = Message.find(params[:id]) #找到该message对象,ruby的变量是随时可以变的,而且可以直接作为对象变量
message.destroy

or

message1 = Message.delete(id)

重置所有表

rake db:reset


删除所有记录,但是主键不重置

Message.delete_all

  相关解决方案