Ruby-on-Rails: Update_attributes substitui as validações do modelo?
-
21-09-2019 - |
Pergunta
Eu tenho um modelo típico de post:
class Post< ActiveRecord::Base
validates_presence_of :user_id #Line 1
validates_presence_of :title,:body #Line 2
No controlador, eu tenho:
def create
if request.post?
if login_required
@post = Post.new(params[:post]) #Line 3
@post .update_attribute("user_id",session[:userid]) #Line 4
No entanto, se as validações na linha 2 falharem, a postagem ainda será criada, a menos que a linha 4 seja comentada.
1) Por quê?
2) sugestões em uma correção?
Obrigado
Solução
Da entrada em update_attribute
dentro O DOC para ActiveRecord :: Persistence:
Atualiza um único atributo e salva o registro sem passar pelo procedimento de validação normal. Isso é especialmente útil para bandeiras booleanas nos registros existentes.
Parece que é uma brecha para ajudá -lo a evitar a sobrecarga de validação quando você faz um ajuste rápido em um recorde. Se você deseja validação, basta usar
@post.update_attributes(:user_id => session[:userid])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow