Rails:如何检查“update_attributes”是否可用会失败吗?
要检查 buyer.save
是否会失败,我使用 buyer.valid?
:
def create
@buyer = Buyer.new(params[:buyer])
if @buyer.valid?
my_update_database_method
@buyer.save
else
...
end
end
如何检查 update_attributes
是否会失败?
def update
@buyer = Buyer.find(params[:id])
if <what should be here?>
my_update_database_method
@buyer.update_attributes(params[:buyer])
else
...
end
end
To check if buyer.save
is going to fail I use buyer.valid?
:
def create
@buyer = Buyer.new(params[:buyer])
if @buyer.valid?
my_update_database_method
@buyer.save
else
...
end
end
How could I check if update_attributes
is going to fail ?
def update
@buyer = Buyer.find(params[:id])
if <what should be here?>
my_update_database_method
@buyer.update_attributes(params[:buyer])
else
...
end
end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果未完成,则返回 false,与
save
相同。如果您更喜欢的话,save!
会抛出异常。我不确定是否有update_attributes!
,但这是合乎逻辑的。只需
http://apidock.com/rails/ActiveRecord/Base/update_attributes
编辑
然后你想要这个方法你就必须写。如果你想预先检查参数卫生。
编辑2
或者,根据您的限制
it returns false if it was not done, same with
save
.save!
will throw exceptions if you like that better. I'm not sure if there isupdate_attributes!
, but it would be logical.just do
http://apidock.com/rails/ActiveRecord/Base/update_attributes
Edit
Then you want this method you have to write. If you want to pre check params sanitation.
Edit 2
Alternatively, depending on your constraints
如果对象无效,则
update_attributes
方法返回 false。因此,只需使用此构造如果您的
my_update_database_method
必须仅在update_attributes
之前调用,那么您应该使用合并方式,可能如下所示:The method
update_attributes
returns false if object is invalid. So just use this constructionIf your
my_update_database_method
has to be call only beforeupdate_attributes
, then you shoud use merge way, probably like this:这可能不是最好的答案,但它似乎回答了你的问题。
结尾
This may not be the best answer, but it seems to answer your question.
end
你最好通过 before_save 在你的模型中检查它
you'd better check it in your model through a before_save
我遇到了同样的情况 - 需要知道记录是否有效并在更新保存之前执行一些操作。我发现有
assign_attributes(attributes)
方法 < code>update 方法在save
之前使用。所以现在这样做可能是正确的:I've run into the same scenario - needed to know if record is valid and do some actions before update save. I've found out that there is
assign_attributes(attributes)
method whichupdate
method uses beforesave
. So nowadays it's likely correct to do: