Все уже украдено до нас.. Ой не от туда:) Все уже было в Симпсонах. Опять не то. Все уже придумано до нас!  Так что, как говорил один великий педагог: а вы, вам, вот, вам английский язык. Выучить от сих до сих. Приеду - проверю. Если не выучите, мо...  Так что берем очередные 10 функций, методов, ключевых слов и тд. из великого и могучего руби и изучаем.

в том случае когда я не уверен в начале строки ставлю "?" вот допустим в 4 пункте нужно проконсультироваться с коллегами.

 

?4) request что то типа глобального массива $_REQUEST в PHP, ну тут не массив а объект. Например request.inspect выдаст кучу переменных экземпляра класса и их значения(?) "REQUEST_METHOD"=>"GET" что бы получит содержимое определенной переменной мы пишем request.request_method. или текущий url request.original_url. Возник вопрос как посмотреть все имена переменных в экземпляре класса request? Сначала подумал что просто что бы получить содержимое переменной нужно просто в нижнем регистре указываем имя типа "REQUEST_METHOD=>request_method но все оказалось намного сложнее, так как в request.inspect "REQUEST_METHOD=>request_method есть, а вот original_url уже нет,  и поэтому ставим знак вопроса перед 4 пунктом. 

 

5) Что значит два двоеточия в ruby?  для примера :

class User
 VIDES_COUNT = 10
 Languages = { "English" => "en", "Spanish" => "es", "Mandarin Chinese" => "cn"}
 def mykonst
 @var55="текст"
 return @var55
 end
end

 @var4=User::VIDES_COUNT  #10
 @var5=User::Languages["English"]  #en
 @var6=User::new::mykonst  #текст
 

Мы можем получить доступ к константам и методам класса из любого места в не класса. для @var6 равнозначно будет @var6=User.new.mykonst

 

6) сразу разберем 2 пункта, операторы find и использование циклов в руби. 

  client = Post.find([12,13])
  @array = Array[]
  i=0;
  client.each do |odna_stroka|
    @array[i]=odna_stroka.title
    i=i+1
  end
  @dbug4=@array[0]

 В начале изучения руби выполнял видео урок где реализовывали добавления постов на сайт, и комментариев. Объект Post таблица приведенная ниже

  create_table "posts", force: :cascade do |t|
    t.string "title"
    t.text "body"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

 рассмотрим метод find, он получает в качестве параметра первичный ключ(id) 

Post.find(12) или Post.find([12,13])

 и возвращает одну или несколько строчек. Которые выше в массиве(для мы разбираем) хотя можно сделать и так: 

@dbug4=client[0].title

?7)  вот тут я еще не разобрался, но так как этот сайт мои размышления, мой черновик для себя пишу:

 client = Post.find_by_sql "SELECT title FROM posts where id=13"

прям виляю хвостом из за того что в руби можно использовать понятные для меня конструкции, для новичка это очень хорошо find_by_sql супер. но вот в чем загвостка, это ответ [#<Post id: nil, title: "оки токи">] а именно Post id: nil , оно нашло нужную мне строчку по id=13, но при создании таблицы поля id не было. выше приведен кусок кода из файла schema.rb. так как я еще не знаю как подключиться через к базе проекта и посмотреть что там для меня это загадка, возможно руби сам создает поле id если мы не указали это явно.

 

8) метод where по сути все что должно быть правее where в sql запросе

 
client = Post.where("id=12")
@dbug4=client[0].id

 

9)has_many и belongs_to рассмотрим одним вопросом. Начал изучение руби я с просмотра видео уроков вот этих парней https://www.youtube.com/watch?v=LAFjA76huC4 что и всем совету. В моделях у Post у меня прописано has_many :comments у Comment belongs_to :post и запросто можно выполнить подобный код:

 
@test1= Post.where("id=12")[0].comments.inspect
@test2= Comment.where("id=4")[0].post.inspect

 то есть из объекта Post мы можем получить доступ с помощью метода comments к комментариям определенного поста и из любого комментария доступ к посту для которого этот комментарий был создан. закомментируем в Comment.rb belongs_to :post 1 строчка работает, 2 строчка выдаст ошибку undefined method `post' . И на оборот. 

 

10)Что такое attr accessor в Ruby, аксессор в руби. Короче небольшое упрощение при работе с классами на мой взгляд.  Представленный ниже код будет работать хотя в классе User у нас нет метода name который позволяет записать в переменную name  и прочитать из нее.

 
test=User.new
test.name="Spanish"
@test1=test.attrtest
@test2=test.name

class User
  attr_reader :name
  attr_writer :name
  Languages = { "English" => "en", "Spanish" => "es", "Mandarin Chinese" => "cn"}
    def attrtest
    return Languages[@name]
    end
end

ну и вишенкой на торте для меня стало что эти две строчки можно заменить attr_accessor:name

 

 

11) комментарии в руби. что бы закомментировать блок кода нужно с начала строки(без пробелов перед) написать =begin и по так же с начала строки где наш комментарий заканчивается =end  для того что бы закомментировать строку используем символ #

 

вопросы на будущее:

где в руби подключаем базу? self практическая польза.

полезная информация:

http://rusrails.ru/  изучаешь руби добавь сайт в закладки:)

https://www.youtube.com/watch?v=LAFjA76huC4  для начала посмотри эти уроки, хоть какое то понимание будет.