@codenamecrud

Страница 157 из 1009
Vitaliy
15.06.2016
09:08:29
значит это Contact должен быть belongs_to :geopoint

а Geopoint has_one :contact, dependent: :destroy

в итоге, если мы будем удалять geopoint со связанным контактом - то и связанный контакт удалится тоже

при этом у Geopoint сохраняется belongs_to :place а у Place has_many :geopoints, dependent: :destroy

Google
Vitaliy
15.06.2016
09:10:10
и при удалении Place будут удаляться все связанные с ним geopoints, если такие есть, и вместе с ними - все связанные с ними contacts, если они есть

N
15.06.2016
09:11:09
...сейчас, правда, контакт завязан на геоточку.(но планируются типы мест без контактов - маршрут, гора, площадь)

значит это Contact должен быть belongs_to :geopoint
Спасибо. Видимо модель БД стоит заново пересмотреть.

Vitaliy
15.06.2016
09:29:55
тут чтобы не было сложностей - связи belongs_to лучше всегда воспринимать как обязательные (required: true)

в пятой рельсе они, кстати, все по умолчанию будут считаться таковыми

и если при создании записи не указать явно все связанные записи для ее belongs_to ассоциаций - рельсы будут выдавать ошибку валидации

это первое, о чем важно знать

и второе - это то, зачем вообще нужно удалять связанные записи

N
15.06.2016
09:31:44
Т.е. значение nil для belongs_to не пройдёт.

Vitaliy
15.06.2016
09:31:57
да, верно

как думаете, зачем рельса должна удалять связанные записи?

N
15.06.2016
09:34:08
и второе - это то, зачем вообще нужно удалять связанные записи
Они же бесполезны без родителя. Нет места => нет контакта.

Vitaliy
15.06.2016
09:34:51
здесь даже не в смысловой логике дело

Google
Vitaliy
15.06.2016
09:34:59
а в более приземленных к БД вещах

обеспечение ссылочной целостности

чтобы не было такого, что в таблице contacts были geopoint_ids, указывающие на уже несуществующие геоточки

и чтобы обеспечить целостность, в ActiveRecord есть указание механизма dependent:

можно делать :destroy, что будет удалять полностью связанную запись либо там можно поставить другой вариант, который будет вместо удаленного айдишника ставить nil в атрибут связанной записи

второй вариант подходит, если наша связь belongs_to необязательная (required: false в 4-х рельсах или optional: true в пятых). В этом случае можно связанную запись и не удалять, просто у нее обнулить ссылку на удаленную запись

но так как большая часть belongs_to - обязательна (и должна восприниматься такой) - то подходящим является первый вариант dependent: :destroy

N
15.06.2016
10:08:52
Хе-хе, да тут не только логику БД надо будет переделать.

Misha
15.06.2016
14:41:17
как получить доступ к методу current_user в модельках?

Vitaliy
15.06.2016
14:50:56
передавать туда из контроллеров

задача какая стоит?

Misha
15.06.2016
15:03:59
проверить where.not(user_id: current_user.id)

Rafkat
15.06.2016
15:10:43
В скоп запили

Misha
15.06.2016
15:11:10
угу, уже сделал

Aldar
15.06.2016
15:56:09
Если есть куча миграций которые друг друга уничтожают, может проще удалить их?

или особо можно не париться?

потому что чтобы выяснить это, придётся прочитать много миграций, и есть вероятность ошибиться

Vitaliy
15.06.2016
16:06:37
если просто удалить файлы миграций - может нарушиться целостность их с текущими БД. так как в каждой БД остается табличка с номерами всех миграций, пропущенных в ней

т.е. удалять можно, но нужно отследить, чтобы в БД в этой табличке номера удаленных миграций тоже были удалены

Aldar
15.06.2016
16:07:27
лучше всё же не удалять

Google
Aldar
15.06.2016
16:07:39
особого профига от этого нет, а напортачить можно неплохо

Rafkat
15.06.2016
16:16:54
Migrate rebase gem запилить чтрли?

Aleserche
15.06.2016
16:21:57
Вот про миграции. Если записей насколько миллионов, то миграции будет тормозить?

Ivan
15.06.2016
16:52:19
Ребят, меня плавит

#length ведь возвращает, если считать с единицы, а не с нуля?

Aldar
15.06.2016
16:53:12
считает число объектов

индекс последнего элемента будет length - 1

Ivan
15.06.2016
16:53:54
да, просто я чуть запутался со счетом. совсем плавит уже.

Aleserche
15.06.2016
17:32:58
напомните, что делает конструкция ||=

Sam
15.06.2016
17:34:05
присваивает если до этого не была присвоена?

Aleserche
15.06.2016
17:34:10
т.е. типа оператора элвиса?

Aleserche
15.06.2016
17:34:45
?:

Ivan
15.06.2016
17:35:36
Прочитал в вики про него, раньше не знал, но нет

Это другое

Если с этим оператором писать то как - то так

var = var ?: new_var

Левый операнд в операторе элвиса может быть любым

Aleserche
15.06.2016
17:36:48
var = var ? var : new_var

Ivan
15.06.2016
17:37:12
Ну, грубо говоря да. Это эквивалент

Google
Andrey
15.06.2016
17:37:24
a ||= 5 то же самое что и a = a || 5

Aleserche
15.06.2016
17:37:26
только не такой гибкий

я все время забываю про ||. Для меня || это OR

Andrey
15.06.2016
17:39:23
так да или нет ?

Ivan
15.06.2016
17:40:16
так да или нет ?
Да я сам запутался. Вообще по логике вещей - да, но в каких то статьях помню написано было что нет. А связано это с тем, что есть ещё такой вариант

a || a = b

Но это иногда кидает ошибку, т.к. в руби не всегда объект нормально работает с "голыми" логическими операторами

Admin
ERROR: S client not available

Ivan
15.06.2016
17:41:10
Как в js например

Andrey
15.06.2016
17:41:30
интересно

надо почитать )

Sam
15.06.2016
17:43:06
Вот http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html

Ivan
15.06.2016
17:43:07
Вот например

Aldar
15.06.2016
17:43:49
Все просто, если а nil, то а будет равно b

Если не nil, то останется с текущим значением

Удобно значение по дефолту проставлять у параметров

Ivan
15.06.2016
17:45:10
>> a = 10 => 10 >> b = nil => nil >> a && c = 5 => 5 >> c => 5 >> b && d = 5 => nil >> d => nil

Вот тут магия

В js это работает классно

Google
Ivan
15.06.2016
17:45:37
А тут как видим - кривовато

Ребят, что - то у меня с математикой проблемы

i -= 26 while i > 26 и i %= 26

равносильны?

Aldar
15.06.2016
19:12:34
нет конечно

вычислительно не равносильны

Ivan
15.06.2016
19:13:00
Ну, это да. Тогда вопрос задам по - другому

Aldar
15.06.2016
19:13:36
>> a = 10 => 10 >> b = nil => nil >> a && c = 5 => 5 >> c => 5 >> b && d = 5 => nil >> d => nil
это вообще ерунда какая то, никто не пишет приравнивание после знака логического И

Ivan
15.06.2016
19:13:48
если мне нужно от большого числа, перейти к порядковому номеру в пределах 26, где после 26 начинается всё с начала

Хотя с присваиванием это я зря пример привел, согласен.

Точно. он найдет целое число 26 и остаток будет как - раз таки нужный. Просто меня что - то уже плавит. Но по сути то, что я писал выше выдаст одинаковый результат. Только это как если считать умножение на какое - то число сложением. c:

Всё. Спать надо. Всем спокойной ночи.

Misha
16.06.2016
09:22:58
есть кто живой?

Aleserche
16.06.2016
09:23:13
скорее всего

Ivan
16.06.2016
09:23:45
Смотря какое состояние назвать словом живой

Misha
16.06.2016
09:30:22
как правильно раскидывать изображение в рейлс аппликухе

Ilona
16.06.2016
09:30:25
полуживой

Misha
16.06.2016
09:30:27
просто в ассетс имеджес?

v
16.06.2016
09:39:49
смотря какие

если они непосредственно к сайту отнсятся - то да

Страница 157 из 1009