我是Rails的初学者,我想知道如何更新我的数据库?(我想知道所有可能的选项)。
我有一个名为USERS的简单表,我得到了:name和:email attributes。
在我阅读时,我可以通过以下方式更新我的电子邮件:
User.find_by(:id => 1).update_attribute email, "sample@foo.bar"
< - 确定User.find_by(:id => 1).update_attributes :email => "sample@foo.bar"
< - 这回到我身边有没有办法通过以下方式更新它:
@foo = User.find_by(:id => 1)
foo.email = "sample@foo.bar"
foo.save
答案 0 :(得分:1)
update_attribute
跳过验证。因此,update_attributes
正在返回false
,因为它没有通过某些验证。仔细检查您的User
模型验证,并确保在attr_accessible
下添加了email
:
class User < ActiveRecord::Base
attr_accessible :email, :name # etc
end
同样使用find
,您不必指定属性,只需使用整数:
@user = User.find(24) # this will find a User with the ID of 24
@user.email = "sample@foo.bar"
@user.save
# or update_attributes which can update multiple attributes at once:
@user.update_attributes(email: "sample@foo.bar", name: "Bob")
# or update_attribute which skips validations and can only update 1
# attribute at a time. Only used for specific situations:
@user.update_attribute(:email, "sample@foo.bar")
答案 1 :(得分:0)
你可以简单地更新记录, User.find(:ID =→1).update_attribute(:电子邮件=&GT;'sample@foo.bar') 因为update_attributes用于更新所有属性。
答案 2 :(得分:0)
您好有两种方法可以使用ActiveRecord更新来更新数据。
第一种方法是:
ex. user = User.find(1)
user.attributes = {
:email => "sample@foo.bar"
}
user.save
第二种方法是:
ex.
user = User.find(1)
user.update_attributes{:email => "sample@foo.bar"}
您还可以使用特定控制器上的“更新方法”进行更新:
ex.
def update
user = User.find(params[:user])
user.update_attributes
end