
Yury
19.02.2017
18:52:23
математически это верно

Vladimir
19.02.2017
18:52:36

Oleg
19.02.2017
18:53:06
а если там результат вычислений? даёшь сравнение с модулем разницы с погрешностью!

Svetlana
19.02.2017
18:57:27

Google

Nikolay
19.02.2017
19:35:22
Как шикарной частотный словарь делается в сололерне
text = "I am learning Ruby and it is fun!"
text.downcase!
freqs = {}
freqs.default = 0
text.each_char { |char| freqs[char] += 1}
("a".."z").each {|x| puts "#{x} : #{freqs[x]}" }

Николай
19.02.2017
19:38:52
Всем привет!
Не могу сообразить, как правильно применять activerecord связи
А именно, has_many
Создал я связи между объектами
Как теперь правильно создавать их так, чтобы эта связь появлялась?
В целом, вопрос по 30 уроку. Есть Barber, он has_many :clients
Client belongs_to :barber
Как мне теперь создать клиента так, чтобы он был привязан к барберу?) Who knows?

Oleg
19.02.2017
19:43:27
вот так barber.clients « my_client
< <
клиента создал, и к барберу привязываешь

Google

Николай
19.02.2017
19:44:21
А в my_client получать из input их формы?

Vitaliy
19.02.2017
19:44:24
Client.create(barber: Barber.first)

Николай
19.02.2017
19:44:51

Vitaliy
19.02.2017
19:45:36
барбер у клиента один, так как связь у вас в нем belongs_to :barber

Николай
19.02.2017
19:47:04
У клиента да, один барбер. Но в твоем коде все клиенты будут к первому в таблице барберу добавляться. Или я неправильно понимаю?

Vitaliy
19.02.2017
19:47:13
class Barber
has_many :clients
end
class Client
belongs_to :barber
end
barber1 = Barber.create
client1 = Client.create(barber: barber1)

Alex
19.02.2017
19:47:16
Всем привет!
Кстати, согласен с тем, что уроки очень даже хороши, но есть один минус - нет разбора домашнего задания. Надо Роме подсказать. И установка ПО и ГЕМов стоило бы продублировать в отдельном видео. Искать по всему видео в дальнейшем не простая задача.

Vitaliy
19.02.2017
19:47:32

Николай
19.02.2017
19:47:51
А если барберов 3,5…10?

Vitaliy
19.02.2017
19:48:21
Тогда нужно изменить пример с учетом требований. Требования какие? По UI/UX

Alex
19.02.2017
19:48:39

Николай
19.02.2017
19:49:11
class Author < ApplicationRecord # ActiveRecord::Base до Rails 5.0
has_many :books, dependent: :destroy
end
class Book < ApplicationRecord # ActiveRecord::Base до Rails 5.0
belongs_to :author
end
С этими изменениями создание новой книги для определенного автора проще:
@book = @author.books.create(published_at: Time.now)
Я в сети видел такое

Vitaliy
19.02.2017
19:49:44
Опишите свои действия как пользователя, работающего с сайтом. Что вы видите, что нажимаете, что вводите и что хотите получить

Николай
19.02.2017
19:49:53
Но вот нижняя строка, если её переделать под или нужды, не работает

Vitaliy
19.02.2017
19:50:09
Тогда будет понятно, какие ресурсы создавать, с какими кнопками и формами, и с какими действиями в экшнах

Николай
19.02.2017
19:50:23
Я, как пользователь, делаю домашнее задание из 30 урока
Там есть пожелание, переделать сделанное с учетом active record has _many
:)

Vitaliy
19.02.2017
19:51:35
аха, понял - это чат, посвященный какому-то ресурсу с курсами по руби?

Google

Alex
19.02.2017
19:51:48

Николай
19.02.2017
19:51:54
Но у меня не получается именно понять, как правильно создавать объекты по новому
В той же форме, где клиент вносит своё имя, телефон и тд. Это типа запись на стрижку


Alex
19.02.2017
19:55:09
Потому я пока и не брался делать эту задачу. Попробовал Лепрозориум через АктивРекорд. Что-то получилось, но не всё. А разбора полётов нет. Вот также сижу и ломаю голову.

Николай
19.02.2017
19:55:32
И вот как этот клиента под этого парикмахера записать?
Именно с помощью has_many

Vitaliy
19.02.2017
19:56:09
тогда
def create
client = Client.create(client_params)
...
end
private
def client_params
params.require(:client).permit(:name, :phone, :barber_id)
end
в селекте выбираем barber_id, его пермиттим и создаем с ним как с параметром клиента

Vitaliy
19.02.2017
19:58:31
has_many с этим не связана. has_many как хелпер - лишь создает пачку геттеров и сеттеров в модели Barber - которую здесь вы никак не трогаете, и которую здесь не нужно трогать

Николай
19.02.2017
19:58:47
Где посмотреть, почитать?
Кроме документации
Официальной

Vitaliy
19.02.2017
19:59:44
блин, почти уже скопипастил сюда ссылку на официальную ?

Николай
19.02.2017
19:59:59
Эту я знаю)

Vitaliy
19.02.2017
20:00:08
Railscasts, поискать среди выпусков подходящие

Google

Николай
19.02.2017
20:00:18
Может кто-то детально разжевывает?

Vitaliy
19.02.2017
20:00:21
а лучше вообще все скачать и глядеть на досуге подряд :)

Oleg
19.02.2017
20:00:25
и гуглить ответы на стэковерфлоу

Vitaliy
19.02.2017
20:00:51
ну кстати, на стек оверфлоу неплохая документация тоже
http://stackoverflow.com/documentation/ruby-on-rails/topics

Николай
19.02.2017
20:01:47
Ок. Я тогда такую ссылку добавлю, может кому поможет…
Rusrails: Связи Active Record
http://rusrails.ru/active-record-associations
Тут вроде расписано, но я не понимаю) мне разжевать надо

Vitaliy
19.02.2017
20:03:12

Николай
19.02.2017
20:03:22
Еще я не понимаю вот такую вещь

Admin
ERROR: S client not available

Николай
19.02.2017
20:03:30
Создал я миграцию
Но, допустим, не сразу ввел все атрибуты
Потом понял, чего не хватает и добавил

Vitaliy
19.02.2017
20:04:03

Oleg
19.02.2017
20:04:15
можно отменить миграцию, добавить атрибуты, и снова её накатить

Николай
19.02.2017
20:04:35
Делаю rake db:migrate и… ничего не происходит
Rollback?

Vitaliy
19.02.2017
20:05:09
да

Николай
19.02.2017
20:05:15
Помогает только удалить базу))

Google

Alex
19.02.2017
20:05:19
перед реком удали базу полностью

Николай
19.02.2017
20:05:45

Oleg
19.02.2017
20:05:48
зачем удалять, когда можно откатить

Vitaliy
19.02.2017
20:05:49
если свой код еще не комиттили, то
rake db:rollback
внести изменения в последнюю миграцию
rake db:migrate

Alex
19.02.2017
20:05:51

Николай
19.02.2017
20:06:20

Vitaliy
19.02.2017
20:06:29

Oleg
19.02.2017
20:07:14
да, всегда можно добавить дополнительных полей в уже существующую таблицу

Николай
19.02.2017
20:07:21
Получается, надо новое имя миграции делать

Vitaliy
19.02.2017
20:07:55
rails g migration add_another_fields_to_clients field1:string field2:integer

Николай
19.02.2017
20:08:00
И, видимо, для этого нужен новый класс

Oleg
19.02.2017
20:08:17
нет, класса не надо

Vitaliy
19.02.2017
20:08:19
где clients - название таблицы
и field1 field2 - поля, которые хотите добавить

Николай
19.02.2017
20:08:24
Я новичок в active record
Так что больно не бейте))

Alex
19.02.2017
20:09:24

Vitaliy
19.02.2017
20:09:27
не теряются, т.к. старые поля вы не трогаете, а только добавляете новые

Николай
19.02.2017
20:10:03
Хорошо, спасибо

Alex
19.02.2017
20:10:54
а при откате данные как? можно потерять?

Vitaliy
19.02.2017
20:11:13
при откате да - если миграция создавала поля, то при откате она их удалит

Николай
19.02.2017
20:11:13
Но проhas_many всё равно не понял