@rubylang

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

Sergei
15.03.2017
10:09:15
В приложение несколько схем используется? В database.yml для них несколько БД прописано?
class Blog::Base < ApplicationRecord establish_connection :blog_schema self.abstract_class = true end

…и это не ответило ни на один из моих вопросов
Т.е используется только одна база данных в зависимости от enviroment

…и это не ответило ни на один из моих вопросов
И в зависимости от того к какой схеме относятся модели, которые наследуют от Base класса, в database.yml выставляется соответствующий schema_search_path

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

А на какую схему миграции накатываются?

Sergei
15.03.2017
10:12:59
т. е. в итоге в рамках одного environment в database.yml несколько БД с разными schema_search_path?
Получается что в рамках одного enviroment в database.yml одна БД с разными schema_search_path

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

Sergei
15.03.2017
10:13:54
А на какую схему миграции накатываются?
Миграции накатываются не на деафултную public схему

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

до сих пор нифига не понятно что у тебя там и что ты пытаешься сделать

Sergei
15.03.2017
10:18:49
до сих пор нифига не понятно что у тебя там и что ты пытаешься сделать
У Postgres схемы это что то типо namespace для таблиц в пределах одной БД.

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
но вот прямо сейчас я не понимаю на какую БД в database.yml накатываются миграции
Миграции накатываются на дефаултную public схему и на одну дополнительную. Зависает все при накате на дополнительную

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 запросе это выразить?

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

только не говори, что у тебя именно там разграничивается дев, прод и тд)

ojab
15.03.2017
10:24:24
Миграции накатываются на дефаултную public схему и на одну дополнительную. Зависает все при накате на дополнительную
и [как я написал выше] непонятно как ты накатываешь миграции на дополнительную схему

Sergei
15.03.2017
10:24:27
если environment (production,staging,etc) — то рельсы это делают самостоятельно, если нет — ты себе что-то накостылил и проблема, вестимо, в этом накостыленном
И самое странное что зависает он не на всех миграциях на эти схемы. Ощущение такое что либо у него connection pool переполняется, либо он создает соединение к заданной схеме и потом его не закрывая пытается создать еще одно но при этом у него это не получается из за того что оно уже открыто

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 или пиши свой костылёк

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

Google
Sergei
15.03.2017
10:35:56
оу, ты прямо в миграции указываешь create_table 'blog.comments'?
Да, схемы я создавал по такому принципу. Но они уже давно есть и работают. Проблема возникает когда надо что то удалить из них (колонки или ряды).

оу, ты прямо в миграции указываешь create_table 'blog.comments'?
В миграции я просто делаю remove_column 'shop.products', :meta_title, :string

оу, ты прямо в миграции указываешь create_table 'blog.comments'?
В этом случае shop это название схемы а products таблица

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

(и постгреса, и рельс)

Sergei
15.03.2017
10:41:33
а в логе какая последняя команда на момент подвисания?
(0.6ms) ALTER TABLE "shop"."products" DROP "schema_name" (0.3ms) ALTER TABLE "shop"."products" DROP "schema_description"

а в логе какая последняя команда на момент подвисания?
В данном случае "schema_name" и "schema_description" это название колонок (так совпало).

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
ну, это сразу скажу должно быть не в контроллере, а каком-то сервисном классе

т.е. тебе надо на текущего юзера перенести какие-то данные с юзера с определенным емейлом если такой есть?

Страница 939 из 1684