рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд╛рдзрд╛рдУрдВ рдФрд░ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░

рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рдЖрд╡реЗрджрди рдореЗрдВ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЖрдкрдХреА рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ gem database_consistency рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред

рд╣рдо рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред ActiveRecord рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдирдореВрдирд╛ рдХреЛрдбред

рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:

create_table :users do |t| t.string :name end 

рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд:

 class User < ApplicationRecord validates :name, presence: true end 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди рдХреЛ рддрд░реАрдХреЛрдВ рдХреА рддрд░рд╣ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: save(validate: false) рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ NULL рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдРрд╕рд╛ рд╣реЛ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдорд╛рдиреНрдпрддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдз рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛ред

 create_table :users do |t| t.string :name, null: false end 

рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ (рд░рд┐рд╡рд░реНрд╕)


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:

 create_table :users do |t| t.string :name, null: false end 

рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд:

 class User < ApplicationRecord validates :name end 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, valid? рдЙрди рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП true рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рд╕реЗ рдХрдИ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рдкреВрд░реЗ рд▓реЗрди-рджреЗрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдпреЗ рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдЕрдХреНрд╖рдо рд╣реИрдВ рдФрд░ presence: true рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ presence: true рд╕рддреНрдпрд╛рдкрдиред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдпрд╣ рд╕рд╡рд╛рд▓ рдЖрдпрд╛ рдХрд┐ рдРрд╕реЗ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛рдП?
рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд░рддреНрди рдбреЗрдЯрд╛рдмреЗрд╕_рд╕рдВрд╕рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣ рдЖрдкрдХреЛ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рднреА рдмрддрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЧреИрд░-рд╢реВрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрд▓рдо рдореЗрдВ NULL рдорд╛рди рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рд╕рд╣реЗрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдХреБрдЫ рдкреНрд░рд╢реНрди рдЦреБрд▓реЗ рд░рд╣рддреЗ рд╣реИрдВ:

  • рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдЕрд╡рд╕рд░ рд╣реИрдВ?
  • рдХреНрдпрд╛ рд╕реАрдХреНрд╡рд▓ рдЬреИрд╕реЗ рдЕрдиреНрдп рдУрдЖрд░рдПрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред рдореИрдВ рдХрд┐рд╕реА рднреА рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!

Source: https://habr.com/ru/post/hi431294/


All Articles