@rubyschool

Страница 77 из 921
Yury
19.02.2017
18:52:23
математически это верно

Vladimir
19.02.2017
18:52:36
балует руби людей, что у него 0.0 == 0 ?
Строже надо сравнивать: 0.eql? 0.0 :)

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

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
Client.create(barber: Barber.first)
А если барбер не один?

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
Всем привет!
Кстати, согласен с тем, что уроки очень даже хороши, но есть один минус - нет разбора домашнего задания. Надо Роме подсказать. И установка ПО и ГЕМов стоило бы продублировать в отдельном видео. Искать по всему видео в дальнейшем не простая задача.

Николай
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
А если барберов 3,5…10?
может надо по Id?

Николай
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
Я, как пользователь, делаю домашнее задание из 30 урока
В 30-м уроке Рома задание дал, но насколько помню особо не объяснил и не показал примеров по поводу один-много

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
в селекте выбираем barber_id, его пермиттим и создаем с ним как с параметром клиента
Подскажи, где есть хорошая документация, понятная, по active record

Где посмотреть, почитать?

Кроме документации

Официальной

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
Rusrails: Связи Active Record http://rusrails.ru/active-record-associations
О, это перевод официальной (http://guides.rubyonrails.org/association_basics.html)

Николай
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
http://stackoverflow.com/documentation/ruby-on-rails/topics
Вот здесь прям можете пройтись по топикам, там много по ActiveRecord, например: http://stackoverflow.com/documentation/ruby-on-rails/1820/activerecord-associations#t=201702192003197934507

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
если свой код еще не комиттили, то rake db:rollback внести изменения в последнюю миграцию rake db:migrate
если уже закомиттили миграцию, то больше в нее ничего не добавляйте и не удаляйте. создавайте новую и ее применяйте

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

Так что больно не бейте))

Vitaliy
19.02.2017
20:09:27
rails g migration add_another_fields_to_clients field1:string field2:integer
да это ничего, пробуйте - попробуйте выполнить команду эту для одной из ваших таблиц - и посмотрите, какие файлы она создаст, и что в этих файлах будет

не теряются, т.к. старые поля вы не трогаете, а только добавляете новые

Николай
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 всё равно не понял

Страница 77 из 921