рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП 5 рд░рддреНрди

Django рдмреНрд▓реЙрдЧ рдореЗрдВ, рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдЖрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдкрд░ рдиреЛрдЯреНрд╕ рдХреА рд╕рдорд╛рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЖрддрдВрдХ рд╡рд┐рд░реЛрдзреА рдореИрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдВрддрд┐рдо 9 рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рдЬрд╡рд╛рд╣рд░рд╛рдд рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЪрд┐рдд рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

рдкрд░рджреЗрд╢реА


рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд░рддреНрдиред рдпрд╣ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рджреЛ рдирдП рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ - add_foreign_key рдФрд░ remove_foreign_key ред

рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЯрд┐рдкреНрдкрдгреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдВрдЬреА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

class CreateComments < ActiveRecord::Migration def change create_table :comments do |t| # тАж t.references :user # ... end # тАж add_foreign_key :comments, :users end end 


Github рдкрд░ рдкреГрд╖реНрда

pacecar


рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╕реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕реБрдВрджрд░ рджрд┐рд▓рдЪрд╕реНрдк рдордгрд┐ред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЛрдк рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреЛрд╕реНрдЯ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рд╣реИрдВ: рд╢реАрд░реНрд╖рдХ , рд╕рд╛рдордЧреНрд░реА , create_at , updated_at ред рдФрд░ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ has_many: рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ ред рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдкреЗрд╕рдХрд░ рдЬреЛрдбрд╝реЗрдВ:

 class Post << ActiveRecord::Base include Pacecar has_many :comments, :dependent => :destroy end 


рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рд╕реНрдХреЛрдк рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ:

 Post.title_matches('Some title') # LIKE "%term%" Post.created_at_before(5.days.ago) # ,    5   Post.maximum_comments #     


рдЬреЗрдо рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреАрдердм рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Github рдкрд░ рдкреГрд╖реНрда

settingslogic


рд░рддреНрдиреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рдЖрд╡реЗрджрди рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рдлрд▓, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЦреНрдпрд╛рдд рдмреЗрди рдЬреЙрдирд╕рди рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧрд▓реЙрдЬрд┐рдХ рд╣реИ ред рд╕рд░рд▓, рд╣рд▓реНрдХреЗ, рдПрдХ YML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдордгрд┐ рдХрд╛ рд▓реЗрдЦрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдореЙрдбрд▓ ( рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ . rb ) рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

 class Settings < Settingslogic source "#{Rails.root}/config/application.yml" namespace Rails.env end 


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ config / application.yml рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ:

 defaults: &defaults default_email: admin@example.com development: <<: *defaults test: <<: *defaults production: <<: *defaults 


рд╡рд░реНрддрдорд╛рди рд░реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд░реНрдЧ рдХреЗ рдЬрд░рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВред

 Settings.default_email # admin@example.com 


Github рдкрд░ рдкреГрд╖реНрда
рдкреНрд░рд▓реЗрдЦрди

letter_opener


рд░реЗрди рдмреЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдСрдерд░рд╢рд┐рдк рдХреЗ рд▓рд┐рдП рдЬреЗрдо рд╕реНрдЯрдм, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХрд╛рд░реНрдп рдХрд╛ рдЕрд░реНрде рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ - рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рд╡рд╛рддрд╛рд╡рд░рдг / рд╡рд┐рдХрд╛рд╕ .rb рдореЗрдВ) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдореЗрд▓ рдбрд┐рд▓реАрд╡рд░реА рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ letter_opener рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

 config.action_mailer.delivery_method = :letter_opener 


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рднреА рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдореЗрд▓ / tmp / letter_opener рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ , рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдПрдХ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдореЗрдВ рдЦреБрд▓рддрд╛ рд╣реИред рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХред

Github рдкрд░ рдкреГрд╖реНрда

рдЕрдорд░


рдЯреАрдордмреЙрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдордгрд┐, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп 'рд╣рдЯрд╛рдП рдЧрдП' рдХреЗ тАЛтАЛрд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд▓рд╛рдкрд░рд╡рд╛рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рд╕реЗ рдмрдЪрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

рдордгрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдЯрд╛рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЛ рдЙрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣рдо "рдЕрдорд░" рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 class AddDeletedToTasks << ActiveRecord::Migration def change add_column :tasks, :deleted, :boolean end end 


рддреЛ рдлрд┐рд░ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдореЙрдбрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ:

 class Task << ActiveRecord::Base include Immortal end 


рдЕрдм, рдЯрд╛рд╕реНрдХ рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Github рдкрд░ рдкреГрд╖реНрда

рдмрд╕ рдЗрддрдирд╛ рд╣реА!


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕ рдиреЛрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИред

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


All Articles