Django рдмреНрд▓реЙрдЧ рдореЗрдВ, рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП
рджрд┐рд▓рдЪрд╕реНрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде
рдкреЛрд╕реНрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдЖрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдкрд░ рдиреЛрдЯреНрд╕ рдХреА рд╕рдорд╛рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЖрддрдВрдХ рд╡рд┐рд░реЛрдзреА рдореИрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдВрддрд┐рдо 9 рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рдЬрд╡рд╛рд╣рд░рд╛рдд рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЪрд┐рдд рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
рдкрд░рджреЗрд╢реА
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд░рддреНрдиред рдпрд╣ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рджреЛ рдирдП рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ -
add_foreign_key рдФрд░
remove_foreign_key ред
рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ
рдЯрд┐рдкреНрдкрдгреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдВрдЬреА рдХреЛ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
class CreateComments < ActiveRecord::Migration def change create_table :comments do |t|
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')
рдЬреЗрдо рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреАрдердм рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Github рдкрд░ рдкреГрд╖реНрдаsettingslogic
рд░рддреНрдиреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рдЖрд╡реЗрджрди рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рдлрд▓, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЦреНрдпрд╛рдд
рдмреЗрди рдЬреЙрдирд╕рди рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧрд▓реЙрдЬрд┐рдХ рд╣реИ ред рд╕рд░рд▓, рд╣рд▓реНрдХреЗ, рдПрдХ YML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдордгрд┐ рдХрд╛ рд▓реЗрдЦрдХ
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдореЙрдбрд▓ (
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / рд╕реЗрдЯрд┐рдВрдЧреНрд╕ .
rb ) рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
class Settings < Settingslogic source "
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓
config / application.yml рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ:
defaults: &defaults default_email: admin@example.com development: <<: *defaults test: <<: *defaults production: <<: *defaults
рд╡рд░реНрддрдорд╛рди рд░реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд░реНрдЧ рдХреЗ рдЬрд░рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВред
Settings.default_email
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 рдкрд░ рдкреГрд╖реНрдардмрд╕ рдЗрддрдирд╛ рд╣реА!
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕ рдиреЛрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИред