Back to Question Center
0

10 ਰੇਲਜ਼ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸ 'ਤੇ ਰੂਬੀ            ਰੇਲਜ਼ 'ਤੇ 10 ਰੂਬੀ ਵਧੀਆ ਤਜਰਬੇ ਸਬੰਧਤ ਵਿਸ਼ੇ: ਰੂਬੀ ਡਿਪਲਾਇਮੈਂਟਸਸੀਫਾਇਰ ਨਿਊਜ਼ ਐਂਡ & ਰੇਲਜਸੈਟਿੰਗ ਸੈਮੂਅਲ 'ਤੇ ਓਪੀਨੀਅਨਰੂਬੀ

1 answers:
10 ਰੇਲਜ਼ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸ 'ਤੇ ਰੂਬੀ

10 ਰੇਲਜ਼ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸ 'ਤੇ ਰੂਬੀਰੇਲਜ਼ 'ਤੇ 10 ਰੂਬੀ ਵਧੀਆ ਤਜਰਬੇ ਸਬੰਧਤ ਵਿਸ਼ੇ:
ਰੂਬੀ ਡਿਪਲਾਇਮੈਂਟਸਸੀਫਾਇਰ ਨਿਊਜ਼ ਅਤੇ ਓਪੀਨੀਅਨ ਰੇਲਜ਼ਸ 'ਤੇ ਰੇਬੀਜਿੰਗ ਸਮਾਲਟ

ਰੇਲਜ਼ ਤੇ ਰੂਬੀ ਇਕ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨ ਫਰੇਮਵਰਕ ਹੈ, ਅਸੀਂ ਸਾਰੇ ਜਾਣਦੇ ਹਾਂ ਰੇਲਜ਼ ਸਾਨੂੰ ਵਧੇਰੇ ਲਾਭਕਾਰੀ ਬਣਾਉਂਦੀ ਹੈ ਅਤੇ ਸਾਨੂੰ ਟੈਕਨਾਲੋਜੀ ਦੀ ਬਜਾਏ ਹੱਥ ਤੇ ਕੰਮ ਨੂੰ ਫੋਕਸ ਕਰਨ ਦਿੰਦਾ ਹੈ. ਪਰ ਰੇਲਜ਼ ਵਿਚ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸਾਂ ਨੂੰ ਧਿਆਨ ਵਿਚ ਰੱਖਦੇ ਹੋਏ, ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਸ਼ੁਰੂ ਹੋਣ ਵੇਲੇ, ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ. ਇਸ ਅਹੁਦੇ 'ਤੇ, ਅਸੀਂ ਰੇਲਜ਼' ਤੇ ਰੂਬੀ ਦੇ ਕੁੱਝ ਵਧੀਆ ਅਮਲ ਨੂੰ ਦੇਖਣ ਲਈ ਜਾ ਰਹੇ ਹਾਂ - acces control system.

ਰੋਡ ਰੋਨ

ਜੇਕਰ ਤੁਸੀਂ ਵੈਬ ਐਪਲੀਕੇਸ਼ਨ ਫਰੇਮਵਰਕ ਦੀ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਥਾ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਸ ਨੂੰ ਜਾਣੇ ਬਿਨਾਂ ਵੀ ਫਰੇਮਵਰਕ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣ ਦਾ ਜੋਖਮ ਨੂੰ ਚਲਾ ਰਹੇ ਹੋ. ਸਭ ਤੋਂ ਮਾੜੇ ਕੇਸਾਂ ਵਿਚ, ਤੁਹਾਡੇ ਐਪਲੀਕੇਸ਼ਨ ਤੁਹਾਡੇ ਲਈ ਇਕ ਸੁਪ੍ਰੀਮ ਬਣਨਾ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦੀਆਂ ਹਨ, ਜਿਸ ਨਾਲ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿਕਸਿਤ ਕਰਨਾ, ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਕਾਇਮ ਰੱਖਣਾ, ਜਾਂ ਨਵੇਂ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਲਿਆਉਣਾ ਮੁਸ਼ਕਿਲ ਹੋ ਜਾਂਦਾ ਹੈ. ਮੇਰੇ 'ਤੇ ਵਿਸ਼ਵਾਸ ਕਰੋ, ਲੋਕਾਂ (i.ਈ., ਤੁਹਾਡੀ ਟੀਮ) ਦੀ ਬਜਾਏ ਆਪਣੇ ਵਾਲਾਂ ਨੂੰ ਬਾਹਰ ਕੱਢਣ ਦੀ ਬਜਾਏ, ਅਸਰਦਾਰ ਅਤੇ ਪ੍ਰਭਾਵੀ ਰਹਿਣ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ ਕਰੋ.

ਪਥ ਆਫ਼ ਗਲੋਰੀ

ਨਾਮ ਇਹ ਸਭ ਕਹਿੰਦਾ ਹੈ: ਵਧੀਆ ਅਮਲ ਉਹ ਇੱਕ ਕਾਰਨ ਕਰਕੇ ਸਭ ਤੋਂ ਵਧੀਆ ਅਤੇ ਸਭ ਤੋਂ ਵੱਧ ਉਪਯੋਗੀ ਹਨ. ਇੱਥੇ ਕੁਝ ਲਾਭ ਹਨ:

  1. ਅਨੁਕੂਲਤਾ
  2. ਪੜ੍ਹਨਯੋਗਤਾ
  3. ਲਾਠੀਆਂ
  4. ਤੇਜ਼ ਵਿਕਾਸ
  5. DRY ਕੋਡ

ਮੀਮਟ ਸ਼ੁਰੂ ਕਰਨਾ

ਰੇਲਜ਼ ਕਮਿਊਨਿਟੀ ਸ਼ੈਲੀ ਦੀਆਂ ਸੇਧਾਂ 'ਤੇ ਰੂਬੀ ਦੀ ਪਾਲਣਾ ਕਰੋ:

ਹਰੇਕ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿਚ, ਅਸੀਂ ਬਦਸੂਰਤ ਅਤੇ ਸੁੰਦਰ ਕੋਡ ਨੂੰ ਵੇਖਿਆ ਹੈ. ਕੋਡ ਸ਼ੈਲੀ ਵਿਅਕਤੀ ਤੋਂ ਵੱਖਰੀ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਨਵੇਂ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਲਿਆਉਣ ਸਮੇਂ ਦੇਰੀ ਹੋ ਸਕਦੀ ਹੈ. ਇੱਕ ਕਮਿਊਨਿਟੀ ਦੁਆਰਾ ਚਲਾਇਆ ਸ਼ੈਲੀ ਗਾਈਡ ਹੋਣ ਨਾਲ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਕੋਡ ਆਧਾਰ ਦੇ ਦੌਰਾਨ ਇਕਸਾਰ ਸ਼ੈਲੀ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਅਹਿਮ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦਾ ਹੈ. ਪ੍ਰੋਜੈਕਟਾਂ ਆਮ ਕਰਕੇ ਛੋਟੇ ਤੋਂ ਵੱਡੇ ਟੀਮਾਂ ਵਿੱਚ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਵੱਖ-ਵੱਖ ਪ੍ਰੋਗਰਾਮਾਂ ਦੀ ਸ਼ੈਲੀ ਅਤੇ ਸਟਾਈਲ ਤੋਂ ਆਉਣ ਵਾਲੇ ਲੋਕ. ਰੂਬੀ ਕਮਿਊਨਿਟੀ ਸਟਾਈਲ ਗਾਈਡ ਦੀ ਮਿਲਾਵਟ ਮੇਰੀ # 1 ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ ਹੈ ਅਤੇ ਇੱਥੇ ਕੁਝ ਸਟਾਈਲ ਤਰਜੀਹਾਂ ਹਨ ਜੋ ਮੈਂ ਅਸਲ 'ਤੇ ਜ਼ੋਰ ਦੇਣਾ ਚਾਹੁੰਦਾ ਹਾਂ:

ਦੋ ਸਪੇਸ ਇਨੈਂਡੇਸ਼ਨ

ਇਹ ਰੂਬੀ ਕਮਿਊਨਿਟੀ ਵਿੱਚ ਸਭਤੋਂ ਬਹੁਤ ਪ੍ਰਵਾਨਿਤ ਅਤੇ ਮਨਜ਼ੂਰੀ ਪ੍ਰਾਪਤ ਸ਼ੈਲੀ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ. 4 ਸਪੇਸ ਐੰਡੈਂਟੇਸ਼ਨ ਦੀ ਬਜਾਏ 2 ਸਪੇਸ ਮਾਰਕੇ ਵਰਤੋਂ. ਆਓ ਇਕ ਉਦਾਹਰਣ ਵੇਖੀਏ

4 ਸਪੇਸ ਮਾਰਕੇ

     def some_methodsome_var = ਸੱਚਾਜੇ some_varਕੁਝ ਕਰੋਦੂਜਾdo_something_elseਅੰਤਅੰਤ    

2 ਖਾਲੀ ਸਥਾਨਾਂ ਦੀ ਬਜਾਏ

     def some_methodsome_var = ਸੱਚਾਜੇ some_varਕੁਝ ਕਰੋਦੂਜਾdo_something_elseਅੰਤਅੰਤ    

ਬਾਅਦ ਵਿਚ ਬਹੁਤ ਸਾਫ਼ ਅਤੇ ਪੜ੍ਹਨਯੋਗ ਹੈ. ਨਾਲ ਹੀ, ਇਹ ਇੱਕ ਵੱਡੀ ਫਾਈਲ ਵਿੱਚ ਜ਼ਿਆਦਾ ਸਪੱਸ਼ਟ ਹੋ ਜਾਵੇਗਾ ਜਿਸ ਵਿੱਚ ਖੋਖਲੇ ਪੱਧਰ ਦੇ ਹੋਰ ਪੱਧਰ ਹੋਣਗੇ.

ਇਕ ਨਾਲ ਪ੍ਰਮਾਣਿਤ ਤਰੀਕਿਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ?

ਰੂਬੀ ਵਿਚ, ਸਾਡੇ ਕੋਲ ਢੰਗਾਂ ਜੋ ਸਹੀ ਜਾਂ ਗਲਤ ਦਿੰਦਾ ਹੈ, ਲਈ ਇੱਕ ਸੰਮੇਲਨ ਹੈ. ਇਹ ਢੰਗਾਂ ਨੂੰ ਵਿਡਕਟ ਢੰਗਾਂ ਦੇ ਤੌਰ ਤੇ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ ਇੱਕ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ ਨਾਲ ਹੁੰਦਾ ਹੈ ? ). ਬਹੁਤ ਸਾਰੀਆਂ ਪ੍ਰੋਗਰਾਮਾਂ ਦੀ ਭਾਸ਼ਾ ਵਿੱਚ, ਤੁਹਾਨੂੰ is_valid ਜਾਂ is_paid ਆਦਿ ਪ੍ਰਭਾਵਾਂ ਦੇ ਰੂਪਾਂ ਜਾਂ ਪਰਿਵਰਤਨਸ਼ੀਲ ਨਾਮਾਂ ਨੂੰ ਵਿਖਾਇਆ ਜਾਵੇਗਾ. ਰੂਬੀ ਇਸ ਸ਼ੈਲੀ ਨੂੰ ਨਿਰਾਧਾਰਿਤ ਕਰਦੀ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਹੋਰ ਮਨੁੱਖੀ ਭਾਸ਼ਾ ਦੇ ਢੰਗਾਂ (ਜਿਵੇਂ ਕਿ 56) ਇਕਾਈ ਪ੍ਰਮਾਣਿਕ? ਜਾਂ ਫੀਸ. ਦਾ ਭੁਗਤਾਨ? (ਨੋਟਿਸ ਨੰਬਰ ਹੈ_ ਪ੍ਰੀ-ਫਿਕਸ, ਦੇ ਨਾਲ ਨਾਲ) ਰੂਬੀ ਦੇ ਸੁਹੱਪਣ ਅਤੇ ਪੜ੍ਹਨਯੋਗਤਾ ਨਾਲ ਇਨਲਾਈਨ ਲਗਾਉਣਾ.

ਪਰਿਵਰਤਨ: ਹਰੇਕ ਦੀ ਬਜਾਏ ਲਈ

ਲਗਭਗ ਸਾਰੇ ਰੂਬੀ ਪ੍ਰੋਗਰਾਮਰ ਲਈ ਇੱਕ ਸੰਗ੍ਰਹਿ ਦੁਆਰਾ ਦੁਹਰਾਏ ਜਾਣ ਦੀ ਬਜਾਏ ਹਰੇਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ. ਇਹ ਸਿਰਫ਼ ਹੋਰ ਪੜ੍ਹਨਯੋਗ ਹੈ.

* * *

     ਲਈ i ਵਿਚ. 100.. 100). ਹਰ ਇੱਕ | i | | . ਅੰਤ     

ਵੇਖੋ?

ਸ਼ਰਤਾਂ: ਵਰਤੋਂ ਜਦ ਤੱਕ ਇਸ ਦੀ ਬਜਾਏ ! ਜੇ :

ਜੇ ਤੁਸੀਂ ਜੇ ਸਟੇਟਮੈਂਟ ਨੂੰ ਨੈਗੇਟਿਵ ਕੰਡੀਸ਼ਨ ਨਾਲ ਵਰਤਦੇ ਹੋ. ਈ:

     ਜੇ!do_thisਅੰਤ    

ਜਾਂ

     ਜੇ ਨਾਮ! = "ਸਰਰਾਮ"ਹੈ, ਜੋ ਕਿ ਕੀ ਕਰਨਾਅੰਤ    

ਤਦ ਤੁਹਾਨੂੰ ਰੂਬੀ ਦੀ ਵਿਸ਼ੇਸ਼ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਕਿ ਨਹੀਂ. ਇਸ ਤਰ੍ਹਾਂ:

     ਜਦੋਂ ਤੱਕ ਸੱਚ ਨਹੀਂdo_thisਅੰਤ    

ਜਾਂ

     ਜਦੋਂ ਤੱਕ ਕਿ ਨਾਂ == "ਸਰਦਾਦ"ਹੈ, ਜੋ ਕਿ ਕੀ ਕਰਨਾਅੰਤ     

ਇਕ ਵਾਰ ਫਿਰ, ਇਹ ਪੜ੍ਹਨਯੋਗਤਾ ਬਾਰੇ ਹੈ. ਹਾਲਾਂਕਿ, ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਨੂੰ ਤੁਹਾਡੀ ਸ਼ਰਤੀਆ ਵਿਚ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ, ਕਦੇ ਵੀ ਵਰਤੋਂ ਨਾ ਕਰੋ- ਦੂਜਾ .

ਬਡ

     ਜਦੋਂ ਤੱਕ ਉਪਭੋਗਤਾ ਨਹੀਂ. ਬਚਾਓ#throw ਗਲਤੀਦੂਜਾ# ਸਫਲਤਾ ਦੀ ਸਫਲਤਾਅੰਤ     

ਚੰਗੇ

     ਜੇ ਯੂਜ਼ਰ ਬਚਾਓ# ਸਫਲਤਾ ਦੀ ਸਫਲਤਾਦੂਜਾ#throw ਗਲਤੀਅੰਤ     

ਛੋਟੇ ਸਰਕਟਾਂ **

ਸ਼ਾਰਟ ਸਰਕਿਟ ਇਹ ਨਿਯਮ ਹੈ ਜੋ ਕੁਝ ਸ਼ਰਤਾਂ ਅਧੀਨ ਸ਼ੁਰੂਆਤੀ ਨਿਕਲਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ. ਇਸ ਉਦਾਹਰਣ ਨੂੰ ਮਿਟਾਓ:

     ਜੇ ਯੂਜ਼ਰ ਲਿੰਗ == "ਮਰਦ" && ਯੂਜਰ. ਉਮਰ> 17ਕੁਝ ਕਰੋelsif ਯੂਜ਼ਰ ਲਿੰਗ == "ਮਰਦ" && ਯੂਜਰ. ਉਮਰ <17 && ਵਰਤੋਂਕਾਰ ਉਮਰ> 5do_something_elseelsif ਯੂਜ਼ਰ ਉਮਰ <5ਸਟੈਂਡਰਡ ਈਰਰਅੰਤ    


ਇਸ ਕੇਸ ਵਿੱਚ, ਇਹ ਪਤਾ ਕਰਨ ਲਈ ਕਿ ਇੱਕ ਉਪਭੋਗਤਾ 5 ਸਾਲ ਦੀ ਉਮਰ ਤੋਂ ਘੱਟ ਹੈ ਅਤੇ ਇੱਕ ਅਪਵਾਦ ਖੜ੍ਹਾ ਕਰਨ ਲਈ ਇਹ ਸਭ ਸ਼ਰਤਾਂ ਤੋਂ ਜਾਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਪਸੰਦੀਦਾ ਢੰਗ ਹੈ:

     ਮਾਨਕ ਇਰੋਰ ਵਧਾਓ ਜੇਕਰ ਉਪਭੋਗਤਾ. ਉਮਰ <5ਜੇ ਯੂਜ਼ਰ ਲਿੰਗ == "ਮਰਦ" && ਯੂਜਰ. ਉਮਰ> 17ਕੁਝ ਕਰੋelsif ਯੂਜ਼ਰ ਲਿੰਗ == "ਮਰਦ" && ਯੂਜਰ. ਉਮਰ <17 # ਅਸੀਂ ਇੱਥੇ ਇੱਕ ਬੇਲੋੜੇ ਚੈੱਕ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਹੈdo_something_elseਅੰਤ    

ਕਿਸੇ ਖ਼ਾਸ ਸਥਿਤੀ ਦੀ ਪੂਰਤੀ ਹੋਣ ਤੇ ਸ਼ੁਰੂਆਤੀ ਵਾਪਸੀ ਲਈ ਇਹ ਬਹੁਤ ਅਸਰਦਾਰ ਹੁੰਦਾ ਹੈ.

ਸੰਕੇਤ: ਮੈਂ ਤੁਹਾਨੂੰ ਉੱਚਿਤ ਸਿਫਾਰਸ਼ ਕਰਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਇੱਥੇ ਰੂਬੀ ਗਾਈਡਾਂ ਅਤੇ ਇੱਥੇ (ਰੇਲਜ਼) ਸਟਾਈਲ ਗਾਈਡਾਂ ਤੇ ਇੱਕ ਵਿਸਤ੍ਰਿਤ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਲਓ.

ਲਿਖਤ ਟੈਸਟ

ਜੇ ਤੁਸੀਂ ਸਿਮਟਲ ਤੋਂ ਜਾਣੂ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਪਤਾ ਲਗਦਾ ਹੈ ਕਿ ਸੈਮਟਲ ਕਮਿਊਨਿਟੀ ਵੱਲੋਂ ਟੈਸਟਿੰਗ 'ਤੇ ਕਿੰਨਾ ਜ਼ੋਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ. ਮੈਂ ਸੁਣਿਆ ਹੈ ਕਿ ਲੋਕਾਂ ਨੇ ਇਹ ਕਹਿੰਦੇ ਸੁਣਿਆ ਹੈ ਕਿ, ਇੱਕ ਨੌਬੀਬੀ ਦੇ ਤੌਰ ਤੇ, ਟੈਸਟ ਕਰਨ ਨਾਲ ਸਮਾਲਟ ਸਿੱਖਣਾ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦਾ ਹੈ. ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਝ ਕਹਿੰਦੇ ਹਨ ਕਿ ਇਹ ਸੈਮੂਅਲ (ਜਾਂ ਕੁਝ ਮਾਮਲਿਆਂ ਵਿੱਚ ਆਮ ਵੈੱਬ ਡਿਵੈਲਪਮੈਂਟ) ਦੀ ਮੁੱਢਲੀ ਜਾਣਕਾਰੀ ਨੂੰ ਪਹਿਲੀ ਵਾਰ ਸਮਝਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਪਰ ਇਹ ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਮੈਂਟ ਵਿਚ ਬਿਲਕੁਲ ਵਧੀਆ ਅਭਿਆਸ ਹੋਣ ਤੋਂ ਟੈਸਟਿੰਗ ਨੂੰ ਰੋਕਦਾ ਨਹੀਂ ਹੈ. ਅਸਲ ਵਿਚ, ਮੈਂ ਲੋਕਾਂ ਨੂੰ ਸ਼ਿਕਾਇਤ ਕੀਤੀ ਹੈ ਕਿ ਇਕ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਇਸ ਨੂੰ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲਗਦਾ ਹੈ, ਜਦੋਂ ਇਹ ਟੈਸਟ ਲਈ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦਾ ਸਮਾਂ ਲੈਂਦਾ ਹੈ. ਪਰ ਇਕ ਵਾਰ ਉਹ ਸੈਮੂਅਲ ਟੈਸਟ ਕਰਨ ਦੀ ਉਮੀਦ ਕਰ ਲੈਂਦੇ ਹਨ ਅਤੇ ਪਹਿਲਾਂ ਲਿਖਤੀ ਟੈਸਟਾਂ ਦੀ "ਮੁਸ਼ਕਲ" ਲਿਖ ਲੈਂਦੇ ਹਨ, ਉਹਨਾਂ ਨੇ ਅਸਲ ਵਿਚ ਕੋਈ ਵੀ ਸਮੇਂ ਵਿਚ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ. ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਸ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਕੇਸਾਂ ਨੂੰ ਵੀ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਇਹ ਸਾਡੇ ਆਬਜੈਕਟ ਦੇ ਇੱਕ ਬਹੁਤ ਵਧੀਆ ਡਿਜ਼ਾਇਨ ਨੂੰ ਬਾਹਰ ਕੱਢਦਾ ਹੈ. ਇੱਕ ਚੰਗੇ ਰੂਬੀ ਡਿਵੈਲਪਰ ਨੂੰ ਟੈਸਟਿੰਗ ਵਿੱਚ ਸੁਭਾਵਕ ਤੌਰ 'ਤੇ ਵਧੀਆ ਹੈ.

ਸੈਮਟ ਲਿਸਟ ਟੈਸਟ ਦੇ ਕੁਝ ਲਾਭ:

  • ਟੈਸਟ ਇੱਕ ਫੀਚਰ ਜਾਂ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਵੇਰਵੇਦਾਰ ਵਿਵਰਣਾਂ ਦੇ ਤੌਰ ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ.
  • ਟੈਸਟ ਦੂਸਰੇ ਦੇਵ ਲਈ ਇੱਕ ਦਸਤਾਵੇਜ਼ ਦੇ ਰੂਪ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਉਹਨਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਤੁਹਾਡੇ ਇਰਾਦੇ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ.
  • ਟੈਸਟ ਬੱਗ ਨੂੰ ਫੜਨ ਅਤੇ ਫਿਕਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ
  • ਟੈਸਟ ਤੁਹਾਨੂੰ ਸੰਸ਼ੋਧਿਤ ਕਰਦਾ ਹੈ ਜਦੋਂ ਰਿਫੈਕਟੋਰਿੰਗ ਕੋਡ ਜਾਂ ਕਾਰਗੁਜ਼ਾਰੀ ਦੇ ਸੁਧਾਰ ਕਰਦੇ ਹਨ ਜੋ ਨਤੀਜੇ ਵੱਜੋਂ ਕੁਝ ਵੀ ਨਹੀਂ ਤੋੜਿਆ ਗਿਆ ਹੈ.

ਸੁੱਕ (ਆਪਣੇ ਆਪ ਨੂੰ ਦੁਹਰਾਓ ਨਾ ਜਾਓ)

ਜੋ ਵੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਦੁਹਰਾਉਂਦੇ ਨਹੀਂ ਹੋ, ਜਿੰਨੀ ਹੋ ਸਕੇ ਦੁਹਰਾਓ ਤੋਂ ਪਰਹੇਜ਼ ਕਰੋ. ਆਉ ਅਸੀਂ ਰੂਬੀ ਦੇ ਆਬਜੈਕਟ ਸੰਬੰਧੀ ਸਿਧਾਂਤ ਦੇ ਦੋ ਤਰੀਕਿਆਂ ਬਾਰੇ ਚਰਚਾ ਕਰੀਏ ਜੋ ਦੁਹਰਾਉਣ ਤੋਂ ਬਚਣ ਵਿਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ.

ਐਬਸਟਰੈਕਟ ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰੋ: ਤੁਹਾਡੇ ਕੋਲ ਇਹ ਦੋ ਸ਼੍ਰੇਣੀਆਂ ਹਨ:

     ਕਲਾਸ ਮਰਸਡੀਜ਼ਡੀ"5 ਸਕਿੰਟਾਂ ਵਿੱਚ 60MPH"ਅੰਤdef apply_bakes"4 ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ"ਅੰਤdef open_boot"ਖੁੱਲ੍ਹਿਆ"ਅੰਤdef turn_headlights_on"ਚਾੱਲੂ ਕੀਤਾ"ਅੰਤdef turn_headlights_off"ਬੰਦ ਕੀਤਾ ਹੋਇਆ"ਅੰਤਅੰਤਕਲਾਸ ਔਡੀਡੀ"60MPH 6. 5 ਸਕਿੰਟ"ਅੰਤdef apply_bakes"3 ਵਿੱਚ ਰੁਕ ਗਿਆ. ਅਸੀਂ ਇਸ ਬਾਰੇ ਚਰਚਾ ਨਹੀਂ ਕਰ ਰਹੇ ਕਿ ਸਾਨੂੰ ਇਸ ਪੋਸਟ ਵਿੱਚ ਕੋਡ ਦੀ ਨਕਲ ਕਿਉਂ ਨਹੀਂ ਕਰਨੀ ਚਾਹੀਦੀ, ਤੁਸੀਂ ਇਸ ਬਾਰੇ ਇੱਥੇ ਪੜ੍ਹ ਸਕਦੇ ਹੋ. ਹੁਣ, ਇਹ ਕੇਵਲ DRY ਸਿਧਾਂਤ ਦੇ ਵਿਰੁੱਧ ਹੈ ਇੱਥੇ ਵਧੀਆ ਅਭਿਆਸ ਕਲਾਸ ਵਿਰਾਸਤ ਅਤੇ / ਜਾਂ ਸਾਰਾਂਸ਼ ਕਲਾਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ. ਆਓ ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਸਾਡੀ ਕਲਾਸ ਨੂੰ ਮੁੜ ਲਿਖੀਏ.  

     ਕਲਾਸ ਕਾਰ# ਹੇਠਾਂ ਲਾਈਨ ਦੀ ਨੁਕਤਾਚੀਨੀ ਕਰੋ ਜੇਕਰ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਇਸ ਕਲਾਸ ਨੂੰ ਅਨਿਸ਼ਚਤਾਪੂਰਣ ਨਾ ਬਣਾਇਆ ਜਾਵੇ# i. ਅਤੇ ਤੁਸੀਂ ਇਸ ਕਲਾਸ ਦੀ ਇਕ ਮਿਸਾਲ ਨਹੀਂ ਬਣਾ ਸਕਦੇ. # ਤੁਸੀਂ ਇਸ ਤੋਂ ਹੋਰ ਕਲਾਸਾਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ # ਸਵੈ abstract = truedef open_boot"ਖੁੱਲ੍ਹਿਆ"ਅੰਤdef turn_headlights_on"ਚਾੱਲੂ ਕੀਤਾ"ਅੰਤdef turn_headlights_off"ਬੰਦ ਕੀਤਾ ਹੋਇਆ"ਅੰਤਅੰਤਕਲਾਸ ਮਰਸਿਡੀਜ਼ <ਕਾਰਡੀ"5 ਸਕਿੰਟਾਂ ਵਿੱਚ 60MPH"ਅੰਤdef apply_bakes"4 ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ"ਅੰਤਅੰਤਕਲਾਸ ਔਡੀ <ਕਾਰਡੀ"60MPH 6. 5 ਸਕਿੰਟ"ਅੰਤdef apply_bakes"3. 3 ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਹੋ ਗਿਆ"ਅੰਤਅੰਤ    

ਕੀ ਇਹ ਵਿਚਾਰ ਆਇਆ? ਬਹੁਤ ਵਧੀਆ!

ਮੌਡਿਊਲ ਵਰਤੋ
ਦੂਜੇ ਪਾਸੇ, ਮੈਡਿਊਲ, ਸਾਰੇ ਕਲਾਸਾਂ ਵਿੱਚ ਵਿਹਾਰ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦਾ ਇੱਕ ਲਚਕਦਾਰ ਢੰਗ ਹਨ. ਕਾਰਨ ਵਿਰਾਸਤੀ ਉੱਤੇ ਮੋਡੀਊਲ (ਰਚਨਾ) ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਇਸ ਦੇ ਅਕਾਉਂਟ ਤੋਂ ਬਾਹਰ ਹੈ. ਇਹ ਕਹਿਣਾ ਕਾਫੀ ਹੁੰਦਾ ਹੈ ਕਿ ਮੈਡਿਊਲ ਇੱਕ "ਹਨ-ਏ" ਹਨ ਅਤੇ ਵਿਰਾਸਤ ਕਲਾਸਾਂ ਅਤੇ ਵਿਵਹਾਰ ਵਿਚਕਾਰ ਇੱਕ "ਹੈ- ਏ" ਸਬੰਧ ਹੈ:

     ਕਲਾਸ ਅਖਬਾਰdef headline#codeਅੰਤdef sports_news#codeਅੰਤdef world_news#codeਅੰਤਡਿਫ ਕੀਮਤ#codeਅੰਤਅੰਤਕਲਾਸ ਬੁੱਕdef ਦਾ ਸਿਰਲੇਖ#codeਅੰਤdef read_page (page_number)#codeਅੰਤਡਿਫ ਕੀਮਤ#codeਅੰਤdef total_pages#codeਅੰਤਅੰਤ    

ਮੰਨ ਲਓ ਕਿ ਸਾਨੂੰ ਪ੍ਰਿੰਟ ਵਿਧੀ ਕੋਡ ਨੂੰ ਦੁਹਰਾਉਣ ਤੋਂ ਬਿਨਾਂ ਦੋਨਾਂ ਵਰਗਾਂ ਲਈ ਵਿਧੀ ਜੋੜਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਇਸ ਤਰ੍ਹਾਂ, ਇਕ ਮੌਡਿਊਲ ਦੀ ਵਰਤੋਂ ਕਰੋ:

     ਮੋਡੀਊਲ ਪ੍ਰਿੰਟਰਬਲdef ਛਾਪੋ#codeਅੰਤਅੰਤ    

ਕਲਾਸਾਂ ਨੂੰ ਮਿਲਾ ਕੇ ਇਨ੍ਹਾਂ ਨੂੰ ਇਸ ਮੈਡਿਊਲ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨਾ:

     ਕਲਾਸ ਅਖਬਾਰ# ਇਹ ਮੋਡੀਊਲ ਦੀਆਂ ਵਿਧੀਆਂ ਨੂੰ ਇਸ ਕਲਾਸ ਦੇ ਮੌਕੇ ਦੇ ਢੰਗ ਵਜੋਂ ਜੋੜ ਦੇਵੇਗਾਸ਼ਾਮਲ ਕਰੋdef headline#codeਅੰਤdef sports_news#codeਅੰਤdef world_news#codeਅੰਤਡਿਫ ਕੀਮਤ#codeਅੰਤਅੰਤਕਲਾਸ ਬੁੱਕ# ਇਹ ਮੋਡੀਊਲ ਦੀਆਂ ਵਿਧੀਆਂ ਨੂੰ ਇਸ ਕਲਾਸ ਦੇ ਮੌਕੇ ਦੇ ਢੰਗ ਵਜੋਂ ਜੋੜ ਦੇਵੇਗਾਸ਼ਾਮਲ ਕਰੋdef ਦਾ ਸਿਰਲੇਖ#codeਅੰਤdef read_page (page_number)#codeਅੰਤਡਿਫ ਕੀਮਤ#codeਅੰਤdef total_pages#codeਅੰਤਅੰਤ    

ਇਹ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਅਤੇ ਉਪਯੋਗੀ ਤਕਨੀਕ ਹੈ ਅਸੀਂ ਪ੍ਰਿੰਟ ਕਰਨ ਯੋਗ ਦੀ ਬਜਾਏ ਦੀ ਬਜਾਏ Printable ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਮਾਡਿਊਲ ਦੀਆਂ ਵਿਧੀਆਂ ਨੂੰ ਕਲਾਸ ਵਿਧੀਆਂ ਦੇ ਰੂਪ ਵਿੱਚ ਵਰਤ ਸਕਦੇ ਹਾਂ.

ਐਂਮਰ ਦੀ ਸਮਾਰਟ ਵਰਤੋਂ

ਕਹੋ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਮਾਡਲ ਬੁੱਕ ਅਤੇ ਇੱਕ ਕਾਲਮ / ਖੇਤਰ ਹੈ ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ ਇਹ ਦਰਸਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕੀ ਇਹ ਡਰਾਫਟ, ਮੁਕੰਮਲ, ਜਾਂ ਪ੍ਰਕਾਸ਼ਿਤ ਹੈ. ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਇਸ ਤਰਾਂ ਕਰ ਰਹੇ ਹੋ:

     ਜੇ ਕਿਤਾਬ. ਸਥਿਤੀ == "ਡਰਾਫਟ"ਕੁਝ ਕਰੋelsif ਬੁੱਕ ਸਥਿਤੀ == "ਸੰਪੂਰਨ"ਕੁਝ ਕਰੋelsif ਬੁੱਕ ਸਥਿਤੀ == "ਪ੍ਰਕਾਸ਼ਿਤ"ਕੁਝ ਕਰੋਅੰਤ    

ਜਾਂ

     ਜੇ ਕਿਤਾਬ. ਸਥਿਤੀ == 0 # ਡਰਾਫਟਕੁਝ ਕਰੋelsif ਬੁੱਕ ਸਥਿਤੀ == 1 # ਕੁੱਲਕੁਝ ਕਰੋelsif ਬੁੱਕ ਸਥਿਤੀ == 2 # ਪਰਕਾਸ਼ਿਤਕੁਝ ਕਰੋਅੰਤ    

ਤੁਹਾਨੂੰ ਐਨੋਮ ਵੇਖਣਾ ਚਾਹੀਦਾ ਹੈ! ਸਥਿਤੀ ਕਾਲਮ ਨੂੰ ਪੂਰਨ ਅੰਕ ਨਿਰਧਾਰਿਤ ਕਰੋ, ਆਦਰਸ਼ਕ ਤੌਰ ਤੇ ਨਲ ਨਹੀਂ ( ਨੱਲ: ਝੂਠਾ ), ਅਤੇ ਉਸ ਸਥਿਤੀ ਦਾ ਮੂਲ ਮੁੱਲ ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਤੁਹਾਡੇ ਮਾਡਲ ਨੂੰ ਸ੍ਰਿਸਟੀ ਦੇ ਬਾਅਦ ਪ੍ਰਾਪਤ ਕਰੋ. e ਡਿਫਾਲਟ: 0 . ਹੁਣ, ਆਪਣੇ ਮਾਡਲਾਂ ਵਿਚ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਜਾਣਕਾਰੀ ਦਿਓ:

     ਦੀ ਸਥਿਤੀ: {ਡਰਾਫਟ: 0, ਪੂਰਾ ਕੀਤਾ ਗਿਆ: 1, ਪ੍ਰਕਾਸ਼ਿਤ: 2}    

ਹੁਣ ਤੁਸੀਂ ਕੋਡ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੁਬਾਰਾ ਲਿਖ ਸਕਦੇ ਹੋ:

     ਜੇ ਕਿਤਾਬ. ਡਰਾਫਟ?ਕੁਝ ਕਰੋelsif ਬੁੱਕ ਮੁਕੰਮਲ ਹੋ?ਕੁਝ ਕਰੋelsif ਬੁੱਕ.  

  • ਕਿਤਾਬ ਡਰਾਫਟ!
  • ਕਿਤਾਬ ਪੂਰਾ ਹੋਇਆ!
  • ਕਿਤਾਬ ਪ੍ਰਕਾਸ਼ਿਤ!

ਮਿਥੁਨਿਕ ਤਰੀਕੇ ਢੰਗ ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਬਦਲ ਸਕਣਗੇ. ਤੁਹਾਡੇ ਸ਼ਸਤਰ ਵਿੱਚ ਕਿਹੜਾ ਸ਼ਾਨਦਾਰ ਸਾਧਨ ਹੈ

ਫੈਟ ਮਾਡਲ, ਸਕਿੰਨੀ ਕੰਟਰੋਲਰਜ਼ ਅਤੇ ਚਿੰਤਨ

ਇਕ ਹੋਰ ਵਧੀਆ ਅਭਿਆਸ ਹੈ ਕਿ ਕੰਟਰੋਲਰਾਂ ਤੋਂ ਗੈਰ-ਜਵਾਬ ਨਾਲ ਸੰਬੰਧਿਤ ਤਰਕ ਬਾਹਰ ਰੱਖਿਆ ਜਾਵੇ. ਜੋ ਕੋਡ ਤੁਸੀਂ ਕੰਟਰੋਲਰ ਵਿਚ ਨਹੀਂ ਲੈਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਉਹ ਕੋਈ ਵਪਾਰਕ ਤਰਕ ਜਾਂ ਪੱਕੇ / ਮਾਡਲ ਬਦਲਣ ਦੇ ਤਰਕ ਹਨ. ਉਦਾਹਰਣ ਵਜੋਂ, ਕਿਸੇ ਕੋਲ ਆਪਣੇ ਕੰਟਰੋਲਰ ਦੀ ਤਰ੍ਹਾਂ ਹੋ ਸਕਦੀ ਹੈ:

     ਕਲਾਸ ਪੁਸਤਕ ਨਿਯੰਤਰਕ <ਐਪਲੀਕੇਸ਼ਨ ਕੰਟਰੋਲਰbefore_action: set_book, ਸਿਰਫ: [: ਸ਼ੋਅ,: ਸੰਪਾਦਨ,: ਅਪਡੇਟ,: ਨਸ਼ਟ,: ਪ੍ਰਕਾਸ਼ਿਤ]ਸੰਖੇਪਤਾ ਲਈ # ਕੋਡ ਛੱਡਿਆ ਗਿਆdef publish@ ਬੁੱਕ ਪ੍ਰਕਾਸ਼ਿਤ = ਸਹੀpub_date = params [: publish_date]ਜੇ pub_date@ ਬੁੱਕ published_at = pub_dateਦੂਜਾ@ ਬੁੱਕ published_at = ਟਾਈਮ ਜ਼ੋਨ ਹੁਣਅੰਤਜੇ @ ਬੁੱਕ ਬਚਾਓ# ਸਫਲਤਾ ਦੀ ਪ੍ਰਤੀਕਿਰਿਆ, ਕੁਝ ਇੱਕ ਫਲੈਸ਼ ਨੋਟਿਸ ਨਾਲ ਰੀਡਾਇਰੈਕਟਦੂਜਾ# ਅਸਫਲਤਾ ਪ੍ਰਤੀਕਿਰਿਆ, ਕੁਝ ਇੱਕ ਫਲੈਸ਼ ਚੇਤਾਵਨੀ ਨਾਲ ਰੀਡਾਇਰੈਕਟਅੰਤਅੰਤਸੰਖੇਪਤਾ ਲਈ # ਕੋਡ ਛੱਡਿਆ ਗਿਆਪ੍ਰਾਈਵੇਟ# ਕਾਰਵਾਈਆਂ ਵਿਚਕਾਰ ਸਾਂਝੇ ਸੈੱਟਅੱਪ ਜਾਂ ਸੀਮਾਵਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਕਾਲਬੈਕ ਵਰਤੋਂ def set_book@ ਬੁੱਕ = ਬੁੱਕ ਲੱਭੋ (ਪੈਰਾ [[id])ਅੰਤਸੰਖੇਪਤਾ ਲਈ # ਕੋਡ ਛੱਡਿਆ ਗਿਆਅੰਤ    

ਮਿਮਾਲਟ ਇਸ ਗੁੰਝਲਦਾਰ ਤਰਕ ਨੂੰ ਇਸ ਦੀ ਬਜਾਏ ਸੰਬੰਧਿਤ ਮਾਡਲ ਵਿੱਚ ਤਬਦੀਲ ਕਰੋ:

     ਕਲਾਸ ਦੀ ਕਿਤਾਬ    

ਇਹ ਇਕ ਸਿੱਧਾ ਕੇਸ ਸੀ ਜਿੱਥੇ ਇਹ ਸਪੱਸ਼ਟ ਹੁੰਦਾ ਹੈ ਕਿ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦਾ ਇਹ ਭਾਗ ਮਾਡਲ ਨਾਲ ਸਬੰਧਿਤ ਹੈ. ਹੋਰ ਬਹੁਤ ਸਾਰੇ ਕੇਸ ਹਨ ਜਿੱਥੇ ਤੁਹਾਨੂੰ ਸਹੀ ਸੰਤੁਲਨ ਲੱਭਣ ਅਤੇ ਜਾਣਨਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕਿੱਥੇ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿੱਥੇ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਦੇ-ਕਦਾਈਂ, ਕੋਈ ਨਿਯੰਤਰਕ ਤੋਂ ਤੁਸੀਂ ਜੋ ਤਰਕ ਲੈਂਦੇ ਹੋ ਉਹ ਕਿਸੇ ਵੀ ਮਾਡਲ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਹੁੰਦਾ. ਤੁਹਾਨੂੰ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਹੋਵੇਗਾ ਕਿ ਇਹ ਸਭ ਤੋਂ ਵਧੀਆ ਕਿੱਥੇ ਫਿੱਟ ਹੋਵੇਗੀ ਮਿਡਲਤਮ ਤੁਹਾਡੇ ਅਨੁਭਵ ਦੇ ਅਨੁਸਾਰ ਤੁਹਾਡੇ ਲਈ ਕੁਝ ਸਧਾਰਣ ਨਿਯਮ ਲਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਜੇ ਤੁਹਾਨੂੰ ਲਗਦਾ ਹੈ ਕਿ ਕਿਸੇ ਸਮੱਸਿਆ ਲਈ ਵਧੀਆ ਢੰਗ ਹੈ, ਤਾਂ ਮੈਨੂੰ ਟਿੱਪਣੀਆਂ ਵਿੱਚ ਦੱਸੋ.

  • ਮਿਡਲ ਨੂੰ ਸਿਰਫ ਮਾਡਲ ਨੂੰ ਸਧਾਰਨ ਪੁੱਛਣਾ ਚਾਹੀਦਾ ਹੈ. ਕੰਪਲੈਕਸ ਪੁੱਛਗਿੱਛਾਂ ਨੂੰ ਮਾਡਲਾਂ 'ਤੇ ਛੱਡਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਵਰਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਸਕੋਪਾਂ ਵਿਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ. ਮੀਲਟੈਂਟ ਵਿੱਚ ਜਿਆਦਾਤਰ ਬੇਨਤੀ ਪ੍ਰਬੰਧਨ ਅਤੇ ਜਵਾਬ ਨਾਲ ਸੰਬੰਧਿਤ ਤਰਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ.

  • ਕੋਈ ਵੀ ਕੋਡ ਜੋ ਬੇਨਤੀ ਨਹੀਂ ਕਰਦਾ ਹੈ ਅਤੇ ਸੰਬੰਧਿਤ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ ਹੈ ਅਤੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਕਿਸੇ ਮਾਡਲ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ ਉਸ ਮਾਡਲ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ.

  • ਕਿਸੇ ਵੀ ਕਲਾਸ ਜੋ ਇੱਕ ਡੈਟਾ ਢਾਂਚੇ ਦੀ ਨੁਮਾਇੰਦਗੀ ਕਰਦਾ ਹੈ ਐਪ / ਮਾਡਲਜ਼ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਇੱਕ ਗੈਰ-ਐਕਟਿਵਰਕੋਰਡ ਮਾਡਲ (ਟੇਬਲ-ਘੱਟ ਕਲਾਸ) ਦੇ ਰੂਪ ਵਿੱਚ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ.

  • ਪੋਰੋ (ਪਲੇਨ ਓਲਡ ਰੂਬੀ ਓਬਜੈਕਟਜ਼) ਰੂਬੀ ਕਲਾਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਦੋਂ ਤਰਕ ਇੱਕ ਖਾਸ ਡੋਮੇਨ (ਛਪਾਈ, ਲਾਇਬ੍ਰੇਰੀ ਅਤੇ ਆਦਿ) ਦਾ ਹੁੰਦਾ ਹੈ ਅਤੇ ਅਸਲ ਵਿੱਚ ਇੱਕ ਮਾਡਲ (ActiveRecord ਜਾਂ Non-ActiveRecord) ਦੇ ਪ੍ਰਸੰਗ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਹੁੰਦਾ. ਤੁਸੀਂ ਇਹਨਾਂ ਕਲਾਸਾਂ ਨੂੰ ਐਪ / ਮਾਡਲ / ਕੁਝ_ ਡਾਇਰੈਕਟਰੀ / ਵਿੱਚ ਪਾ ਸਕਦੇ ਹੋ. ਐਪ / ਅੰਦਰਲੀ ਕੋਈ ਵੀ ਚੀਜ਼ ਐਪ ਸਟਾਰਟਅੱਪ ਉੱਤੇ ਆਪਣੇ ਆਪ ਲੋਡ ਹੋ ਜਾਂਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਰੇਲਜ਼ ਆਟੋੋਲਲੋਡ ਪਾਥ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ. POROs ਨੂੰ ਐਪ / ਮਾਡਲ / ਚਿੰਤਾਵਾਂ ਅਤੇ ਐਪ / ਕੰਟਰੋਲਰ / ਚਿੰਤਾਵਾਂ ਡਾਇਰੈਕਟਰੀਆਂ ਵਿੱਚ ਵੀ ਰੱਖਿਆ ਜਾ ਸਕਦਾ ਹੈ.

  • ਮੋਡਿਊਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੇ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਕਿਸਮ ਦੀ ਕੋਈ ਕਾਰਜਸ਼ੀਲਤਾ ਤੋਂ ਆਮ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਕੱਢਣਾ ਪਵੇ. ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਐਪ / * ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਅਤੇ 78 78 / lib / ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਰੱਖ ਸਕਦੇ ਹੋ ਜੇਕਰ ਉਹ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸੁਤੰਤਰ ਕਰ ਦਿੰਦੇ ਹਨ.

  • "ਸੇਵਾ" ਪਰਤ ਵਨੀਲਾ ਐਮਵੀਸੀ ਦੇ ਸਮਰਥਨ ਵਿਚ ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਜਗ੍ਹਾ ਹੈ ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਕੋਡ ਵਧ ਰਿਹਾ ਹੈ ਅਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੋ ਰਿਹਾ ਹੈ ਕਿ ਕਿੱਥੇ ਖਾਸ ਤਰਕ ਲਗਾਉਣਾ ਹੈ. ਕਲਪਨਾ ਕਰੋ ਕਿ ਜਦੋਂ ਕੋਈ ਕਿਤਾਬ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਾਂ ਉਹਨਾਂ ਦੀਆਂ ਡਿਵਾਈਸਾਂ ਤੇ ਪੁਸ਼ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਕੋਲ ਐਸਐਮਐਸ ਜਾਂ ਈਮੇਲ ਸੂਚਨਾ ਭੇਜਣ ਲਈ ਕੋਈ ਵਿਧੀ ਹੈ. ਤੁਸੀਂ ਐਪ / ਸੇਵਾਵਾਂ / ਵਿੱਚ ਇੱਕ ਸੂਚਨਾ ਸੇਵਾ ਬਣਾ ਸਕਦੇ ਹੋ ਅਤੇ ਤੁਹਾਡੀ ਕਾਰਜਸ਼ੀਲਤਾ ਸੇਵਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ.

ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ / ਸਥਾਨਕਕਰਣ

ਸ਼ੁਰੂਆਤ ਤੋਂ ਆਪਣੇ ਐਪ ਨੂੰ ਇੰਟਰਨੈਸ਼ਨਲ ਕਰੋ ਇਸ ਨੂੰ ਬਾਅਦ ਵਿਚ ਨਾ ਛੱਡੋ ਜਾਂ ਇਹ ਤੁਹਾਨੂੰ ਬਾਅਦ ਵਿਚ ਪਰੇਸ਼ਾਨ ਕਰਨ ਲਈ ਵਧੇਗੀ. ਚੰਗੀਆਂ ਵੈੱਬਸਾਈਟਾਂ ਕਿਸੇ ਇੱਕ ਭਾਸ਼ਾ 'ਤੇ ਭਰੋਸਾ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ, ਉਹਨਾਂ ਦੀ ਆਮ ਤੌਰ' ਤੇ ਵਧੇਰੇ ਭਾਸ਼ਾਈ ਟੀਚਾ ਹੁੰਦਾ ਹੈ ਵੱਡਾ, ਵਧੀਆ ਇਹ ਵਿਕਾਸ ਦੇ ਨਾਲ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਦੇ ਸਭ ਤੋਂ ਵਧੀਆ ਅਮਲ ਹੈ. ਇਸ ਲਈ I18n ਰਤਨ ਵਾਲਾ ਜਹਾਜ਼ ਰੇਲਜ਼ ਕਰਦਾ ਹੈ, ਜੋ ਤੁਹਾਡੇ ਐਪ ਨੂੰ ਅੰਤਰਰਾਸ਼ਟਰੀ ਬਣਾਉਣ ਦੇ ਮਹੱਤਵ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ. ਤੁਸੀਂ ਇੱਥੇ ਇਸ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹ ਸਕਦੇ ਹੋ.

ਇਹ ਤੁਹਾਨੂੰ ਡੱਬੇ ਦੇ ਬਾਅਦ ਪਾਲਣ ਕਰਦਾ ਹੈ:

  • ਬਾਕਸ (ਅੰਗ੍ਰੇਜ਼ੀ) ਵਿਚ ਅੰਗਰੇਜ਼ੀ ਅਤੇ ਇਸਦੀਆਂ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਲਈ ਸਹਾਇਤਾ
  • ਦੂਜੀ ਭਾਸ਼ਾਵਾਂ
  • ਲਈ ਹਰ ਚੀਜ਼ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਅਤੇ ਵਧਾਉਣਾ ਸੌਖਾ ਬਣਾਉਣਾ

ਇਹ ਤੁਹਾਨੂੰ ਇੱਕ ਡਿਫੌਲਟ ਲੋਕੇਲ ਸੈਟ ਕਰਨ ਅਤੇ ਉਪਭੋਗਤਾ ਦੇ ਨਿਰਧਾਰਤ ਸਥਾਨ ਜਾਂ ਪਸੰਦ ਦੇ ਅਨੁਸਾਰ ਸਥਾਨ ਨੂੰ ਬਦਲਣ ਦਿੰਦਾ ਹੈ.

ਇੱਥੇ ਇੱਕ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਲਈ ਇੱਕ ਨਾ-ਅੰਤਰਰਾਸ਼ਟਰੀ HTML ਕੋਡ ਦੀ ਛੋਟੀ ਉਦਾਹਰਨ ਪਰਿਵਰਤਨ ਹੈ:

     

ਬੁਕਸ ਸੂਚੀ <ਸਾਰਣੀ> ਨਾਂ ਲੇਖਕ ਕੁਝ ਕਿਤਾਬ ਕੁਝ ਲੇਖਕ

ਸੰਰਚਨਾ / ਲੋਕੇਲ ਡਾਇਰੈਕਟਰੀ ਵਿਚਲੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਰੇਲਜ਼ ਦੁਆਰਾ ਆਪਣੇ ਆਪ ਲੋਡ ਹੋ ਜਾਂਦੇ ਹਨ. ਹਰੇਕ ਰੇਲਜ਼ ਐਪ ਵਿੱਚ ਇੱਕ ਸੰਰਚਨਾ / ਲੋਕੇਲ / ਇੱਕ ਹੈ. ਡਿਫਾਲਟ ਰਾਹੀਂ yml ਇਹ ਫਾਈਲ ਅੰਗ੍ਰੇਜੀ ਅਨੁਵਾਦਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੈ. ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਲਈ ਅਨੁਵਾਦ ਜੋੜਨ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਤੁਸੀਂ ਸਿਰਫ ਲੋਕੇਲ ਨਾਮ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਫਾਈਲਾਂ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰ ਸਕਦੇ ਹੋ . yml ਐਕਸਟੈਂਸ਼ਨ. ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਅਸੀਂ ਅਤੇ ਨਾਲ yml . ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ Letrs ਰਿਐਫੈਕਟਰ HTML :

     

<% = t ('. ਦਾ ਸਿਰਲੇਖ')%> <ਸਾਰਣੀ> <% = t ('. ਨਾਮ')%> <% = t ('. ਲੇਖਕ')%> ਕੁਝ ਕਿਤਾਬ ਕੁਝ ਲੇਖਕ

ਹੁਣ ਵਿਚ ਦਿਖਾਉਣ ਲਈ ਸਮੱਗਰੀ ਨੂੰ ਰੱਖੋ. yml ਫਾਈਲ ਵਿੱਚ ਦਰਜ ਕਰੋ ਤਾਂ ਕਿ ਅੱਪਡੇਟ HTML ਅਨੁਵਾਦਾਂ ਨੂੰ ਐਕਸੈਸ ਕਰ ਸਕੇ.

     # config / en ymlen:ਸਿਰਲੇਖ: "ਬੁਕਸ ਸੂਚੀ"ਨਾਮ: "ਨਾਮ"ਲੇਖਕ: "ਲੇਖਕ"    

ਡੇਟਾਬੇਸ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸ

ਇਹ ਡੀਬੀ / ਸਕੀਮਾ ਆਰਬੀ ਫਾਈਲ ਵਿਚ ਇਸ ਦੇ ਸਿਖਰ 'ਤੇ ਇਕ ਟਿੱਪਣੀ ਦਿੱਤੀ ਗਈ ਹੈ ਜਿਸ ਵਿਚ ਲਿਖਿਆ ਹੈ:

     ਇਸ ਦੀ ਜ਼ੋਰਦਾਰ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਇਸ ਫਾਈਲ ਨੂੰ ਆਪਣੇ ਵਰਜਨ ਨਿਯੰਤਰਣ ਪ੍ਰਣਾਲੀ ਵਿੱਚ ਚੈੱਕ ਕਰੋ.     

ਅਤੇ

     ਜੇ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਪ੍ਰਣਾਲੀ 'ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਡਾਟਾਬੇਸ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਚਾਹੀਦਾ ਹੈdb ਦਾ ਉਪਯੋਗ ਕਰਨਾ: ਸਕੀਮਾ: ਲੋਡ, ਸਕ੍ਰੈਚ ਤੋਂ ਸਾਰੇ ਮਾਈਗਰੇਸ਼ਨ ਨੂੰ ਨਹੀਂ ਚਲਾ ਰਿਹਾ. ਨੂੰਬਾਅਦ ਵਾਲਾ ਇੱਕ ਨੁਕਸਦਾਰ ਅਤੇ ਅਸੁਰੱਖਿਅਤ ਪਹੁੰਚ ਹੈ (ਹੋਰ ਪ੍ਰਵਾਸ ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਹੋਵੋਗੇਇਕੱਠਾ ਕਰੋ, ਹੌਲੀ ਇਸ ਨੂੰ ਚਲਾਓ ਅਤੇ ਮੁੱਦਿਆਂ ਲਈ ਵੱਧ ਸੰਭਾਵਨਾ).     

ਇਸ ਦੀ ਜ਼ੋਰਦਾਰ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਹਮੇਸ਼ਾ ਇਹ ਸੰਸਕਰਣ ਤੁਹਾਡੇ ਵਰਜਨ ਨਿਯੰਤਰਣ ਪ੍ਰਣਾਲੀ ਵਿੱਚ ਜਾਂਚ ਕਰੇ. ਜੇ ਇਹ ਫਾਈਲ ਸਹੀ ਸਮੇਂ 'ਤੇ ਚੈਕ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਤੁਸੀਂ ਅਪਡੇਟ ਨਹੀਂ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਪੈਦਲ ਡੀਬੀ: ਸਕੀਮਾ: ਲੋਡ ਦਾ ਉਪਯੋਗ ਨਹੀਂ ਕਰ ਸਕਦੇ. ਜਿਵੇਂ ਕਿ ਇਸ ਉਪਰ ਵਿਖਿਆਨ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੇਕਰ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਮਸ਼ੀਨ ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਡਾਟਾਬੇਸ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਤੁਹਾਨੂੰ db: schema: load ਦੀ ਬਜਾਏ db: migrate ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ. ਸ਼ੁਰੂ ਤੋਂ ਸਾਰੇ ਪ੍ਰਵਾਸਾਂ ਨੂੰ ਚਲਾਉਣ ਨਾਲ ਨਿਰਾਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਸਮੇਂ ਦੇ ਨਾਲ ਫੋਕੇ ਹੋਣ ਦੀ ਉਹਨਾਂ ਦੀ ਪ੍ਰਵਿਰਤੀ ਹੁੰਦੀ ਹੈ. ਜਦੋਂ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬੱਘੇ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ ਕਿ ਸਮੱਸਿਆਵਾਂ ਕਿੱਥੇ ਹਨ, ਕਿੱਥੇ ਮਾਈਗਰੇਸ਼ਨਾਂ ਵਿੱਚ ਇਹ ਗਲਤ ਹੋਇਆ ਹੈ. db: ਸਕੀਮਾ: ਲੋਡ ਉਨ੍ਹਾਂ ਹਾਲਾਤਾਂ ਵਿੱਚ ਮੁਕਤੀਦਾਤਾ ਹੈ

ਸਾਵਧਾਨ ਰਹੋ! ਡੀਬੀ: ਸਕੀਮਾ: ਲੋਡ ਨੂੰ ਉਦੋਂ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਇੱਕ ਨਵੀਂ ਪ੍ਰਣਾਲੀ ਤੇ ਆਪਣਾ ਐਪਲੀਕੇਸ਼ਨ ਡਾਟਾਬੇਸ ਬਣਾਉਣ ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ. ਜੇ ਤੁਸੀਂ ਨਵੇਂ ਮਾਈਗਰੇਸ਼ਨ ਜੋੜ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਬਸ ਡੀਬੀ: ਮਾਈਗ੍ਰੇਟ ਕਰਨਾ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ. ਜੇ ਤੁਸੀਂ db: ਸਕੀਮਾ: ਲੋਡ ਮੌਜੂਦਾ ਅਤੇ ਆਬਾਦੀ ਵਾਲੇ ਡੀ ਬੀ ਤੇ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਡਾਟਾ (ਉਤਪਾਦਨ ਡੇਟਾ ਹੋ ਸਕਦਾ ਹੈ) ਖਤਮ ਹੋ ਜਾਵੇਗਾ. ਇਸ ਲਈ ਇਨ੍ਹਾਂ ਤਿੰਨ ਸਧਾਰਨ ਨਿਯਮਾਂ ਨੂੰ ਯਾਦ ਰੱਖੋ ਅਤੇ ਤੁਸੀਂ ਠੀਕ ਹੋ ਜਾਵੋਗੇ:

  1. ਹਮੇਸ਼ਾ ਚੈੱਕ ਕਰੋ ਸਕੀਮਾ ਤੁਹਾਡੇ ਵਰਜਨ ਨਿਯੰਤਰਣ ਪ੍ਰਣਾਲੀ ਵਿੱਚ rb ਜਦੋਂ ਤੁਸੀਂ ਕੋਈ ਨਵਾਂ ਮਾਈਗ੍ਰੇਸ਼ਨ ਜੋੜਦੇ ਅਤੇ ਲਾਗੂ ਕਰਦੇ ਹੋ
  2. ਵਰਤੋਂ db: ਸਕੀਮਾ: ਲੋਡ ਜਦੋਂ ਇੱਕ ਨਵਾਂ ਸਿਸਟਮ ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਡਾਟਾਬੇਸ ਬਣਾਉਂਦਾ ਹੈ.
  3. ਵਰਤੋਂ ਡੀਬੀ: ਮਾਈਗ੍ਰੇਟ ਹੋਰ ਸਾਰੇ ਮਾਮਲਿਆਂ ਵਿੱਚ ਜਦੋਂ ਤੁਹਾਨੂੰ ਨਵੇਂ ਬਣੇ ਪ੍ਰਵਾਸਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ.

ਸੰਕੇਤ: ਡੀ ਬੀ ਨੂੰ ਡੇਟਾ ਜੋੜਨ ਲਈ ਮਿਗਰੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰੋ ਵਰਤੋਂ ਡੀਬੀ / ਬੀਜ ਇਸ ਉਦੇਸ਼ ਲਈ RB ਇਸਦੇ ਬਜਾਏ.

Nested Resources / Routes

ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਸਰੋਤ ਹੈ ਜੋ ਇਕ ਹੋਰ ਸਰੋਤ ਨਾਲ ਸਬੰਧਿਤ ਹੈ, ਤਾਂ ਬੱਚੇ ਦੇ ਰਸਤੇ ਸਰੋਤ ਦੇ ਮਾਰਗਾਂ ਦੇ ਅੰਦਰ ਸੰਨ੍ਹ ਲਗਾਉਣ ਲਈ ਇਹ ਇੱਕ ਚੰਗਾ ਵਿਚਾਰ ਹੈ ਮਾਪੇ ਸਰੋਤ . ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਪੋਸਟ ਸਰੋਤ ਅਤੇ ਇੱਕ ਟਿੱਪਣੀ ਸਰੋਤ ਹਨ, ਅਤੇ ਇਨ੍ਹਾਂ ਮਾਡਲ ਐਸੋਸੀਏਸ਼ਨਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰੋ:

  • ਪੋਸਟ ਮਾਡਲ ਦੇ ਕਈ ਟਿੱਪਣੀਆਂ ਹਨ
  • ਟਿੱਪਣੀ ਮਾਡਲ ਸੰਬੰਧਿਤ ਹੈ ਪੋਸਟ

ਅਤੇ ਤੁਹਾਡੀ ਸੰਰਚਨਾ / ਰੂਟਸ. ਆਰਬੀ ਫਾਇਲ ਇਸ ਤਰ੍ਹਾਂ ਦਿੱਸਦੀ ਹੈ:

     ਸਰੋਤ: ਪੋਸਟਸਰੋਤ: ਟਿੱਪਣੀਆਂ    

ਇਹ ਤੁਹਾਡੇ ਰੂਟਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰੇਗਾ:

  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟਾਂ
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1 / ਸੰਪਾਦਨ
  • http: // localhost: 3000 / ਟਿੱਪਣੀਆਂ
  • http: // localhost: 3000 / ਟਿੱਪਣੀਆਂ / 1
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਟਿੱਪਣੀਆਂ / 1 / ਸੰਪਾਦਨ

ਜੋ ਠੀਕ ਹੈ, ਪਰ ਚੰਗਾ ਅਭਿਆਸ ਨਹੀਂ ਹੈ ਸਾਨੂੰ 24 ਪੋਸਟ ਰੂਟਾਂ ਦੇ ਅੰਦਰ ਟਿੱਪਣੀ ਨੈਸਟਡ ਰੂਟਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ. ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

     ਸਰੋਤ: ਪੋਸਟਾਂ ਕਰੋਸਰੋਤ: ਟਿੱਪਣੀਆਂਅੰਤ    

ਹੁਣ ਇਹ ਤੁਹਾਡੇ ਰੂਟਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰੇਗਾ:

  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟਾਂ
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1 / ਸੰਪਾਦਨ
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1 / ਟਿੱਪਣੀਆਂ
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1 / ਟਿੱਪਣੀਆਂ / 1
  • http: // ਲੋਕਲਹੋਸਟ: 3000 / ਪੋਸਟ / 1 / ਟਿੱਪਣੀਆਂ / 1 / ਸੰਪਾਦਨ

URL ਪੜਨਯੋਗ ਹਨ ਅਤੇ ਦਰਸਾਉਂਦੇ ਹਨ ਕਿ ਟਿੱਪਣੀਆਂ ਪੋਸਟ ਨਾਲ ਸਬੰਧਤ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ID 1 ਹੈ. ਹਾਲਾਂਕਿ ਥੋੜ੍ਹੀ ਜਿਹੀ ਮਿਲੀ ਹੈ: ਰੂਬੀ ਦੇ ਫਾਰਮ ਅਤੇ ਯੂਆਰਐਲ ਹੈਲਪਰਾਂ ਦੇ ਤੁਹਾਡੇ ਉਪਯੋਗ ਵਿੱਚ ਕੁਝ ਬਦਲਾਵ ਕਰਨੇ ਪੈਣਗੇ. ਉਦਾਹਰਣ ਵਜੋਂ, ਟਿੱਪਣੀ ਰੂਪ ਵਿੱਚ, ਤੁਹਾਡੇ ਕੋਲ ਇਹ ਹੈ:

     <% = form_for (@comment) ਕਰੋ | f | | %><% end%>    

ਇਸ ਨੂੰ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ. ਇਸ ਵੇਲੇ ਟਿੱਪਣੀ ਦਾ ਇੱਕ ਨਵਾਂ ਮੌਕਾ ਲੱਗਦਾ ਹੈ, ਸਾਨੂੰ ਇਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਕੁਝ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:

     <% = ਫਾਰਮ_ ਲਈ ([@ ਟਿੱਪਣੀ ਟਿੱਪਣੀ, ਪੋਸਟ, @comment]) do | f | | %><% end%>    

ਫਾਰਮ_ ਲਈ ਸਹਾਇਕ ਵਿੱਚ ਪਾਸ ਕੀਤੇ ਦਲੀਲਾਂ ਵੱਲ ਧਿਆਨ ਦਿਓ. ਇਹ ਹੁਣ ਇੱਕ ਐਰੇ ਹੈ, ਅਤੇ ਇਸ ਵਿੱਚ ਪਹਿਲੇ ਮਾਤਾ ਸਰੋਤ ਅਤੇ ਟਿੱਪਣੀ ਮਿਸਾਲ ਦੂਜਾ ਹੈ.

ਇਕ ਹੋਰ ਚੀਜ਼ ਜੋ ਸਾਨੂੰ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ, ਸਾਰੇ URL ਹੈਲਪਰਾਂ ਲਈ ਟਿੱਪਣੀਆਂ :

     <% = link_to 'ਦਿਖਾਓ', ਟਿੱਪਣੀ%>    

ਇਸ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਜਾਵੇਗਾ:

     <% = link_to 'Show', [comment]. ਆਓ ਇੱਕ ਨਜ਼ਰ ਮਾਰੋ    ਸੰਪਾਦਨ    ਲਿੰਕ:  

     <% = link_to 'ਸੰਪਾਦਨ', ਸੰਪਾਦਨ_ਕਮਾਂਡ_ਪਾਥ (ਟਿੱਪਣੀ)%>    

ਇਸ ਤਰ੍ਹਾਂ ਇਸ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਜਾਵੇਗਾ:

     <% = link_to 'ਸੰਪਾਦਨ', edit_post_comment_path (ਟਿੱਪਣੀ ਪੋਸਟ, ਟਿੱਪਣੀ)%>    

ਧਿਆਨ ਦੇਵੋ! ਸਹਾਇਕ ਸਹਾਇਕ / ਰਾਊਟਿੰਗ ਦੇ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਸਹਾਇਕ ਸਹਾਇਕ ਨਾਂ edit_post_comment_path ) ਅਤੇ ਆਰਗੂਮਿੰਟ (2 ਦੀ ਬਜਾਏ 2 ਆਰਗਜ਼) ਬਦਲੇ ਗਏ ਹਨ

ਵਰਤੋਂ ਟਾਈਮ ਜ਼ੋਨ ਹੁਣ ਇਸ ਦੀ ਬਜਾਏ ਸਮਾਂ ਹੁਣ

ਇਕ ਵਧੀਆ ਅਭਿਆਸ ਇਹ ਹੈ ਕਿ ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਡਿਫਾਲਟ ਟਾਈਮ ਜ਼ੋਨ ਨੂੰ ਹਮੇਸ਼ਾ ਸੰਰਚਨਾ / ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਪਰਿਭਾਸ਼ਤ ਕਰਨਾ. ਆਰ ਬੀ ਇਸ ਤਰ੍ਹਾਂ ਪਸੰਦ:

     ਸੰਰਚਨਾ time_zone = 'ਪੂਰਬੀ ਸਮਾਂ (ਅਮਰੀਕਾ ਅਤੇ ਕਨੇਡਾ)' '     

ਤਾਰੀਖ. ਅੱਜ ਅਤੇ ਸਮਾਂ ਹੁਣ ਮਸ਼ੀਨ ਦੇ ਟਾਈਮਜ਼ੋਨ ਵਿੱਚ, ਮਸ਼ੀਨ ਦੀ ਸਥਾਨਕ ਮਿਤੀ ਅਤੇ ਸਮਾਂ ਹਮੇਸ਼ਾ ਦਿੰਦਾ ਹੈ. ਇਹ ਵਰਤਣ ਦਾ ਮਤਲਬ ਹੈ ਸਮਾਂ ਜ਼ੋਨ ਹੁਣ ਅਤੇ ਸਮਾਂ ਜ਼ੋਨ ਅੱਜ ਵਿਕਾਸ ਦੀਆਂ ਮਸ਼ੀਨਾਂ ਅਤੇ ਉਤਪਾਦਨ ਸਰਵਰਾਂ ਤੇ ਸਮੇਂ ਦੇ ਜ਼ੋਨਾਂ ਵਿਚਾਲੇ ਸੰਘਰਸ਼ਾਂ ਨੂੰ ਘਟਾਉਣ ਲਈ.

ਦ੍ਰਿਸ਼ਟੀਕੋਣਾਂ ਵਿਚ ਜ਼ਿਆਦਾ ਤਰਕ ਨਾ ਪਾਓ

ਮਿਡਲ ਪ੍ਰਸਤੁਤੀ ਪਰਤ ਹਨ, ਜਿਸ ਵਿਚ ਤਰਕ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ. ਤੁਹਾਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਚੈੱਕਾਂ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ:

     <% ਜੇ ਕਿਤਾਬ. ਪ੍ਰਕਾਸ਼ਿਤ? && ਕਿਤਾਬ published_at> 1. ਹਫ਼ਤੇ ਪਹਿਲਾਂ%> ਹਾਲ ਹੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ   <% end%>    

ਜਾਂ

     <% ਜੇ ਮੌਜੂਦਾ_ਯੂਜ਼ਰ. ਭੂਮਿਕਾਵਾਂ ਇਕੱਠਾ ਕਰੋ (ਅਤੇ: ਨਾਮ) ਸ਼ਾਮਲ ਕਰੋ? ("ਐਡਮਿਨ") || (ਯੂਜ਼ਰ == ਕਿਤਾਬ, ਮਾਲਕ ਅਤੇ ਕਿਤਾਬ. ਡਰਾਫਟ?)%><% = link_to 'ਮਿਟਾਓ', ਬੁੱਕ, ਵਿਧੀ:: ਮਿਟਾਓ, ਡੇਟਾ: {ਪੁਸ਼ਟੀ ਕਰੋ: 'ਕੀ ਤੁਸੀਂ ਨਿਸ਼ਚਤ ਰੂਪ ਵਿੱਚ?' }%><% end%>    

ਤੁਸੀਂ ਕੀ ਕਰ ਸਕਦੇ ਹੋ ਇਹ ਸ਼ਰਤੀਆ ਜਾਂਚ ਨੂੰ ਇੱਕ ਹੈਲਪਰ ਮੈਡਿਊਲ ਤੇ ਭੇਜੋ, ਜੋ ਕਿ ਐਪ / ਹੈਲਪਰਾਂ ਵਿੱਚ ਸਥਿਤ ਹੈ ਅਤੇ ਆਪਣੇ ਆਪ ਹੀ ਸਾਰੇ ਵਿਯੂ ਵਿੱਚ ਉਪਲਬਧ ਹਨ. ਇੱਥੇ ਇੱਕ ਉਦਾਹਰਨ ਹੈ:

     # ਐਪ / ਵਿਊ / ਹੈਜ਼ਰ / ਐਪਲੀਕੇਸ਼ਨ_ਹੈਲਪਰ rbਮੋਡੀਊਲ ਐਪਲੀਕੇਸ਼ਨਹੈਲਪਰਡੀ.ਆਰ.ਐੱਚ.ਕਿਤਾਬ ਪ੍ਰਕਾਸ਼ਿਤ? && ਕਿਤਾਬ published_at> 1. ਹਫ਼ਤੇ ਪਹਿਲਾਂਅੰਤ# current_user ਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਕੰਟਰੋਲਰ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ ਕਿ ਹੋ ਸਕਦਾ ਹੈ# ਸਹਾਇਕ ਮੋਡਿਊਲ ਅਤੇ ਢੰਗਾਂ ਤੋਂ ਐਕਸੈੱਸ ਕੀਤਾdef can_delete? (ਕਿਤਾਬ)current_user ਭੂਮਿਕਾਵਾਂ ਇਕੱਠਾ ਕਰੋ (ਅਤੇ: ਨਾਮ) ਸ਼ਾਮਲ ਕਰੋ? ("ਐਡਮਿਨ") || (ਯੂਜਰ == ਕਿਤਾਬ. ਮਾਲਕ ਅਤੇ ਕਿਤਾਬ. ਡਰਾਫਟ?)ਅੰਤਅੰਤ    

ਉੱਪਰ ਦੇ ਵਿਯੂ ਮਾਰਚਅਪ ਨੂੰ ਮਿਥਣ ਦਿਓ:

     <% ਜੇ ਹਾਲ ਹੀ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ ਹੈ? (ਕਿਤਾਬ)%> ਹਾਲ ਹੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ   <% end%>    

ਅਤੇ

     <% ਜੇ can_delete? (ਕਿਤਾਬ)%><% = link_to 'ਮਿਟਾਓ', ਬੁੱਕ, ਵਿਧੀ:: ਮਿਟਾਓ, ਡੇਟਾ: {ਪੁਸ਼ਟੀ ਕਰੋ: 'ਕੀ ਤੁਸੀਂ ਨਿਸ਼ਚਤ ਰੂਪ ਵਿੱਚ?' }%><% end%>    

ਇੱਥੇ ਬਹੁਤ ਸਾਰੇ ਹੋਰ ਸਥਾਨ ਹਨ can_delete? ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਲੇਕਿਨ ਇਹ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਤੋਂ ਵੱਖਰੇ ਤਰਕਾਂ ਦੀ ਇਕ ਉਦਾਹਰਨ ਹੈ.

ਸਿੱਟਾ

ਜਿਵੇਂ ਮੈਂ ਇਸ ਅਹੁਦੇ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿਚ ਚਰਚਾ ਕੀਤੀ ਸੀ, ਇਹ ਸਾਡੇ ਜੀਵਨ ਨੂੰ ਆਸਾਨ ਬਣਾ ਦਿੰਦਾ ਹੈ ਜੇ ਪ੍ਰਾਜੈਕਟ ਢੁਕਵੇਂ ਤਰੀਕੇ ਨਾਲ ਲਿਖੇ ਗਏ ਹਨ ਜਿਵੇਂ ਕਿ ਢਾਂਚੇ ਅਤੇ ਸਮਾਜ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਤ ਕੀਤਾ ਗਿਆ ਹੈ. ਇੱਕ ਫਰੇਮਵਰਕ ਦੇ ਵਧੀਆ ਅਮਲ ਉਨ੍ਹਾਂ ਲੋਕਾਂ ਦੁਆਰਾ ਵਿਕਸਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਜੋ ਅਨੁਭਵ ਕਰਦੇ ਹਨ, ਜੋ ਕੁਝ ਖਾਸ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਨ ਦੇ ਨਕਾਰਾਤਮਕ ਤਰੀਕੇ ਨਾਲ ਲੰਘ ਗਏ ਹਨ, ਉਨ੍ਹਾਂ ਨੂੰ ਸਮੱਸਿਆ ਦੇ ਦੁਆਲੇ ਇੱਕ ਵਧੀਆ ਪ੍ਰੈਕਟਿਸ ਵਿੱਚ ਚਲਾਉਂਦੇ ਹੋਏ ਸਾਡੇ ਲਈ ਸਾਡੇ ਭਾਈਚਾਰੇ ਵਿੱਚ ਅਜਿਹੇ ਲੋਕਾਂ ਦੇ ਹੋਣ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਤਜ਼ਰਬੇ ਤੋਂ ਲਾਭ ਲੈਣਾ ਚੰਗਾ ਹੈ. ਸੁਭਾਗਪੂਰਵਕ ਸਮਾਲਟ ਇੱਕ ਮਹਾਨ ਕਮਿਊਨਿਟੀ ਦੇ ਲਈ ਪ੍ਰਸਿੱਧ ਹੈ, ਜੋ ਇਸਨੂੰ ਸਾਡੇ ਦੁਆਰਾ ਕੀਤੇ ਤਰੀਕੇ ਨਾਲ ਪਸੰਦ ਕਰਦਾ ਹੈ.

ਮੈਨੂੰ ਯਕੀਨ ਹੈ ਕਿ ਹੋਰ ਪ੍ਰਥਾ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਮਹੱਤਵਪੂਰਨ ਸਮਝਦੇ ਹਨ. ਮੈਨੂੰ ਟਿੱਪਣੀ ਵਿੱਚ ਆਪਣੇ ਮਨਪਸੰਦ ਜਾਣ ਦਿਉ.

March 7, 2018