
ojab
15.03.2017
10:09:15
…и это не ответило ни на один из моих вопросов

Sergei
15.03.2017
10:09:15

Google

ojab
15.03.2017
10:11:59
т. е. в итоге в рамках одного environment в database.yml несколько БД с разными schema_search_path?
А на какую схему миграции накатываются?

Sergei
15.03.2017
10:12:59

ojab
15.03.2017
10:13:26
ок, для рельс это разные БД

Sergei
15.03.2017
10:13:54

ojab
15.03.2017
10:15:18
А для рельс это какая БД? Миграции накатываются на единственную схему и при этом зависают?
до сих пор нифига не понятно что у тебя там и что ты пытаешься сделать

Sergei
15.03.2017
10:18:49

ojab
15.03.2017
10:19:03
я понимаю что такое схема в postgres
но вот прямо сейчас я не понимаю на какую БД в database.yml накатываются миграции
если environment (production,staging,etc) — то рельсы это делают самостоятельно, если нет — ты себе что-то накостылил и проблема, вестимо, в этом накостыленном

Rafkat
15.03.2017
10:20:42
Всем привет

Sergei
15.03.2017
10:20:44

Google

Rafkat
15.03.2017
10:20:57
я что то вообще отвык в послдеене время от работы с бд
может кто подсказать
SELECT SUM("orders"."amount") AS sum_amount, COUNT(orders.id) as orders_count, DATE(created_at) AS date_created_at
FROM "orders"
GROUP BY DATE(created_at)
как в activerecord запросе это выразить?

Sergei
15.03.2017
10:22:03

Ruslan
15.03.2017
10:23:00
весь вопрос в том, зачем тебе разграничение на схемы в рамках ПГ?
только не говори, что у тебя именно там разграничивается дев, прод и тд)

ojab
15.03.2017
10:24:24

Sergei
15.03.2017
10:24:27

I
15.03.2017
10:26:26
Схемы можно в адаптере задавать

Антон
15.03.2017
10:27:41
кто-то нас опять запутать хочет

Sergei
15.03.2017
10:29:19
и [как я написал выше] непонятно как ты накатываешь миграции на дополнительную схему
default: &default
adapter: postgresql
encoding: unicode
pool: 5
database: <%= "#{Rails.application.class.parent_name.downcase}_#{Rails.env}" %>
production: &production
<<: *default
staging: &staging
<<: *default
development: &development
<<: *default
test: &test
<<: *default
blog_schema:
<<: *<%= Rails.env %>
schema_search_path: "blog"
shop_schema:
<<: *<%= Rails.env %>
schema_search_path: "shop"
class Blog::Base < ApplicationRecord
establish_connection :blog_schema
self.abstract_class = true
end
class Blog::Comment < Blog::Base
self.table_name = "blog.comments"
end

ojab
15.03.2017
10:30:21
длинный код лучше в gist кидать

Sergei
15.03.2017
10:31:52
Ок. Не когда не приходилось им пользоваться до этого.

ojab
15.03.2017
10:31:54
так что если ты хочешь использовать миграции для нескольких БД (в терминологии рельс) — бери какой-нибудь https://github.com/thiagopradi/octopus или пиши свой костылёк

Sergei
15.03.2017
10:33:54

ojab
15.03.2017
10:34:37
оу, ты прямо в миграции указываешь create_table 'blog.comments'?

Google

Sergei
15.03.2017
10:35:56

ojab
15.03.2017
10:39:10
а в логе какая последняя команда на момент подвисания?
(и постгреса, и рельс)

Sergei
15.03.2017
10:41:33

pny
15.03.2017
11:11:12

Vasiliy
15.03.2017
11:12:44
ну потому что плохо же это, по любому наступит момент когда нужно будет массово обновить много данных без валидаторов или или кто-то обновит без валидации модель и всё пойдёт в ад
если есть возможность валидировать/присваивать значения на уровне БД то это надо делать

pny
15.03.2017
11:16:12
Создаем constraint на каждую валидацию рельсовую? Везде задаем дефолты в бд?

Maxim
15.03.2017
11:17:05
Кто-нибудь знает надежный способ сделать артикулы?
сейчас
after_initialize { self.articul = Product.order(created_at: :desc).limit(1).pluck(:articul).first.succ rescue INITIAL_ARTICUL }

Maxim
15.03.2017
11:17:30
на уровне бд
или не на уровне

ojab
15.03.2017
11:18:13
создать в БД sequence на колонку

Maxim
15.03.2017
11:18:29
Только еще должно чтобы некоторые данные входили из связанных таблиц

ojab
15.03.2017
11:18:34
хотя не очень понятно что ты в итоге хочешь получить

Maxim
15.03.2017
11:19:51
Платье belongs_to :size & :color
артикул 541254xxls
нене
452145-xxl-r

Google

Maxim
15.03.2017
11:20:36
xxl и r это Size#name & Color#name[0]

ojab
15.03.2017
11:22:02
А требования к артикулам какие? Есть вероятность что имеет смысл не писать size & color в артикул а отдельным методом в модели собирать из id+size+color.

Maxim
15.03.2017
11:24:10
будет поиск по артикулам

ojab
15.03.2017
11:26:58
тогда ничего не мешает складывать в колонку id+size+color

Dmytro
15.03.2017
11:28:27
Как в simple_form добавить data attributes к каждому option в select?

Nikita
15.03.2017
11:29:11
data: { foo: 1 } ?
http://stackoverflow.com/questions/8326355/simple-forms-custom-data-attribute

Dmytro
15.03.2017
11:36:29
нужно для каждого элемента в collection свой

Amir
15.03.2017
14:12:35
Необходимо перенести пользователей Битрикс в Рельцы
а точнее в devise
Кто нибудь делал подобное посоветуйте плиз
Битрикс использует вроде как md5 с солью
а devise bcrypt
просто копировать не получится наверно

Admin
ERROR: S client not available

ojab
15.03.2017
14:14:13
https://github.com/plataformatec/devise/wiki/How-To:-Create-a-custom-encryptor
создаёшь encryptor, который повторяет действия битрикса, и всё работает

Amir
15.03.2017
14:19:36
function isUserPassword($userId, $password)
{
$userData = CUser::GetByID($userId)->Fetch();
$salt = substr($userData['PASSWORD'], 0, (strlen($userData['PASSWORD']) - 32));
$realPassword = substr($userData['PASSWORD'], -32);
$password = md5($salt.$password);
return ($password == $realPassword);
}
хотя чтот не очень врубаюсь

Ruslan
15.03.2017
14:25:41
битрикс такой битрикс..
а ты планируешь сделать переход с битры навсегда? ну т.е. ее больше не будет и у тебя будет приложение на рельсах?

ojab
15.03.2017
14:28:35
Digest::MD5.hexdigest("#{salt}#{password[0, 32]}"), если я знаю php
хм

Ruslan
15.03.2017
14:30:01
не, не так

Google

ojab
15.03.2017
14:30:03
хотя оно, кажется, соль в последних 32 символах хранит

Dmitry
15.03.2017
14:32:46
причем тут даже не mb_subst... Кичмар какой

Ruslan
15.03.2017
14:33:46
так оно походу уже с хешем манипуляции эти делает, а не с тем, что вбил юзер

Dmitry
15.03.2017
14:36:50
да точно, не углядел. Все равно кошмар )

Amir
15.03.2017
14:37:31

Ruslan
15.03.2017
14:38:07
у вас будет какая-то отдельная БД для нового сервиса или как?

Amir
15.03.2017
14:38:21
ага

Ruslan
15.03.2017
14:38:32
просто как вариант, можно малой кровью обойтись и логинится через удаленный сервер - через какой-то метод на стороне битры

Dmitry
15.03.2017
14:38:38
я как-то соединялся с WordPress (правда с YII2) чтобы была общая авторизация админки WP и Yii2 админки. Это было то еще приключение. Вообще им скорее всего да, придется переносить. Там жеж структура таблиц ад )

Ruslan
15.03.2017
14:38:46
и просто после авторизации сразу ставить флаг
что мол залогился, генерить пароль нормальный в рельсах
и всегда теперь его авторизовывать через рельсы

Amir
15.03.2017
14:39:25
еще интересно, можно ли объединить сессии :)))
допустим пользователь зашел на сайт , и на рельцах авторизовать автоматом без ввода пароля, через кук или сессии как то так :)

Ruslan
15.03.2017
14:39:28
тогда можно будет забить на реализацию логинки в битре
думаю это будет геморно и костыльно...

Dmitry
15.03.2017
14:39:58
я подхачил WP чтобы он в куку пихал WP юзера а потом его доставал из другого сайта, лез в БД WP и там проверял. Так что можно сделать :)
но да, мутить будет потом от этого кода)

Ruslan
15.03.2017
14:41:24
про вариант, что я говорил выше, что просто логинится первый раз через битру, а потом переключаться на нормальную логику рельс, можно реализовать вот так - http://4trabes.com/2012/10/31/remote-authentication-with-devise/

Di
15.03.2017
14:48:35
Братцы, нутром чую что говнокод, надоумьте как лучше. Задача: проверить есть ли в базе юзер с заданным емейлом, если есть - переписать на него кое какое наследство и удовлетворенно сдохнуть текущему юзеру и залогинить нового. В противном случае апдейтнуть текущего. Это в контроллере код.
if logged_in? && current_user.temporary_email?
if exist_user = User.find_by_email(address.email)
current_user.authentications.update_all(user_id: exist_user.id)
user_to_destroy = current_user
logout
auto_login(exist_user)
user_to_destroy.destroy
else
current_user.update_attribute(email: address.email)
end
end

Ruslan
15.03.2017
14:50:09
ну, это сразу скажу должно быть не в контроллере, а каком-то сервисном классе
т.е. тебе надо на текущего юзера перенести какие-то данные с юзера с определенным емейлом если такой есть?

ojab
15.03.2017
14:54:58
А зачем такое могло понадобиться?