@rubylang

Страница 1387 из 1684
AhmedAnonSom
16.02.2018
09:04:45
Chat has rules. http://telegra.ph/Chat-rules-02-15 - English version http://telegra.ph/Behavior-rules-02-15 - Russian version
But hole group speaks russine u should make rule on.that cause am not part of thr gruop

Alex
16.02.2018
09:09:40
подскажите пожалуйста, как в рельсах 4 получить в строгих параметрах один из параметров в виде хеша? В params он есть, в строгих параметрах он тоже вписан, но по итогу он пустой при сохранении модели... 10 вариантов с ST не помогли....

Aleksey
16.02.2018
09:10:33
покажи код

Google
Alexander
16.02.2018
09:11:58
если набор ключей неизвестен то проще записать в обход permitted attributes

Alex
16.02.2018
09:12:46
params = {"utf8"=>"✓", .... "description"=>"It is", "inventory"=>{"TV"=>"2", "Microwave"=>"1", "Mixer"=>"2"}}, "commit"=>"Post Your Job", "controller"=>"jobs", "action"=>"create"}

inventory мне нужен

def job_params params.require(:job).permit(..., :inventory) end

Alexander
16.02.2018
09:14:03
хеши пропускает только если указать ключи

Alex
16.02.2018
09:14:17
но хеш динамичный

ключи наборные

Alexander
16.02.2018
09:16:49
задача permitted attributes - не пропустить лишнего в модель, для этого им надо знать что именно можно. если тип даных узнать никак нельзя - значит permitted attributes тут не прокатят

ojab
16.02.2018
09:17:53
Alexander
16.02.2018
09:17:55
my_record = MyRecord.new(my_record_params) my_record.inventory = params[:inventory]

Alex
16.02.2018
09:18:48
.permit(inventory: {})
Опять же на выходе пустой хеш

Alexander
16.02.2018
09:18:49
или по хардкору params.permit!

Google
Alex
16.02.2018
09:19:10
.permit(inventory: {})
Это в рельсах 5 можно

А в 4 как я понял нет

ojab
16.02.2018
09:19:25
оу, там четвёртые. Тогда никак, да.

Alex
16.02.2018
09:19:51
Просто

Но не красиво мжб

Спасибо)

Alexander
16.02.2018
09:20:51
Но не красиво мжб
да не сцы, 100 раз так делал ?

Alex
16.02.2018
09:21:00
:)

Антон
16.02.2018
09:25:52
Опять же на выходе пустой хеш
гугли permitted attribues white list

как-то вот так params.require(:user).permit(:username).tap do |whitelisted| whitelisted[:data] = params[:user][:data] end только ты обходишь inventory по каждому ключу и добавляешь в whitelisted каждое значение

Alexander
16.02.2018
09:28:38
на самом деле с точки зрения архитектуры то permitted attribues в контроллере это зло. Контроллер должен принять запрос, делегировать исполнение, вернуть результат. Он точно не должен знать что там покоится во внутренностях модели

Антон
16.02.2018
09:28:59
но в общем да, отдайть параметры форм обджекту/сервис обджекту проще и понятнее

и тесты лишний раз не будут падать ?

А в 4 как я понял нет
https://blog.trackets.com/2013/08/17/strong-parameters-by-example.html

учитесь гуглить пагни

Alexander
16.02.2018
09:33:27
учитесь гуглить пагни
и что там? там точно также руками запихивается хеш в результат, в обход самого .permit

Alex
16.02.2018
09:34:40
params.require(:job).permit(:name, ... , :inventory) params.require(:job).tap do |whitelisted| whitelisted[:inventory] = params[:job][:inventory] end

=> ActiveModel::ForbiddenAttributesError

Google
Alexander
16.02.2018
09:36:04
поменяй строчку whitelisted[:inventory] = params[:job][:inventory].to_h ( или to_hash, не помню)

Антон
16.02.2018
09:37:58
=> ActiveModel::ForbiddenAttributesError
params = ActionController::Parameters.new(usernames: ["john", "kate"]) params.permit(usernames: []) # => { "usernames" => ["john", "kate"] } потестируй руками хватит мучить чатик

врятли кто-то в здравом уме будет запоминать как такое делать

это вам не php

Alex
16.02.2018
09:40:40
в PHP проще и можно все запомнить? ?

Nikita
16.02.2018
09:40:53
Alexander
16.02.2018
09:41:19
она вылетит еще тут: params.require(:job)

Nikita
16.02.2018
09:41:20
whitelisted[:inventory] = params.dig(:job, :inventory)&.to_h

Антон
16.02.2018
09:41:28
в PHP проще и можно все запомнить? ?
это требование, нужно все запомнить

Alexander
16.02.2018
09:42:12
whitelisted[:inventory] = params.dig(:job, :inventory)&.to_h
если job пустой туда не дойдет

Антон
16.02.2018
09:43:40
в PHP проще и можно все запомнить? ?
Недавно я читал пост в ЖЖ, где в комментариях прошла идея сравнения эникейщиков Windows и жрецов из D&D. Процитирую: «В игровой системе D&D придумано такое интересное деление для характеристик мыслительных способностей пресонажа: на INT (интеллект) и WIS (мудрость). Для мага более существенен INT, для священника – WIS, хотя игровая суть примерно одна и та же – использование волшебства (что это, как не проекция работы “компьютерщика” с точки зрения среднего обывателя). Впрочем, игровая механика нам тут несущественна, но интересна сама классификация способов постижения мира — путем самостоятельного построения логических конструкций (INT) или путем накопления знаний (WIS)». отсюда, помоему прекрасно https://habrahabr.ru/post/110767/

Nikita
16.02.2018
09:43:56
если job пустой туда не дойдет
тогда словишь ошибку, если нет :inventory)

No
16.02.2018
09:44:50
Скорее это жизненный опыт, скилл "Жить в этом мире"

Антон
16.02.2018
09:45:36
Как любитель настольных РПГ всё же отмечу, что WIS - это не путь накопления знаний
ну если у жреца на первом круге блесс и две легких лечилки, то в бою он ничего другого помнить не может

Alexander
16.02.2018
09:46:33
Антон
16.02.2018
09:47:19
тогда словишь ошибку, если нет :inventory)
||= ....... || {} больше треша богу треша

Nikita
16.02.2018
09:47:52
||= ....... || {} больше треша богу треша
то, что я написал вернет nil, если что-то пойдет не так

а дальше пусть валидирует

No
16.02.2018
09:53:51
ну если у жреца на первом круге блесс и две легких лечилки, то в бою он ничего другого помнить не может
Да, но там же WIS ещё влияет на внимательность и прочие подобные штуки. Что странно кореллириует с накоплением знаний )

Google
Roman
16.02.2018
10:03:18
Всем привет. Почему миграция не проходит? Просто ничего не происходит https://gist.github.com/SunRa8/fe6cec33e570834c2154987b80a94ac3

Максим
16.02.2018
10:05:04
products_from_params

что это?

Roman
16.02.2018
10:06:00
че-то пропустил, но суть в том, что даже никаких экзепшенов нет

потому что имя файла неподходящее?
не, в проекте оно нормальное :)

Roman
16.02.2018
10:06:43
когда убираю весь код, кроме методов миграции, то все проходит

Nikita
16.02.2018
10:06:48
посмотри версию миграции, посмотри версию базы

Alexander
16.02.2018
10:06:51
Всем привет. Почему миграция не проходит? Просто ничего не происходит https://gist.github.com/SunRa8/fe6cec33e570834c2154987b80a94ac3
там у тебя точно должен быть не change а up но это не главное посмотри если ли версия твоей миграции в списке: ActiveRecord::SchemaMigration.all если есть - удали

Nikita
16.02.2018
10:06:55
и сделай выводы, проходила она или нет и почему

ojab
16.02.2018
10:07:11
а, у тебя там change

нужен up/down

Nikita
16.02.2018
10:07:23
ну там up 100%

ojab
16.02.2018
10:07:35
потому что рельсы не могут откатывать непонятные изменения

хотя, вроде, оно только при rollback должно жаловаться :/

Alexander
16.02.2018
10:08:14
вроде только при rollback падает

Roman
16.02.2018
10:09:02
я дропаю базу, накатываю миграции и эти изменения игнорятся

Google
Roman
16.02.2018
10:09:22
когда убираю весь код, кроме методов миграции, то все проходит

Dmitry
16.02.2018
10:49:35
Ребят, подсажите, я чтото не врубаюсь в пятых рельсах чтобы сериализацию джейсона использовать в таком виде render json: @posts, include: 'author.comments.**' нужно ли какойто другой сериализатор подрубать у меня сейчас работает только такого вида render json: @posts.to_json({include:[bla_bla]}) гем active_model_serializers в самом контроллере делаю ActiveModelSerializers.config.adapter = :json_api но ничего не меняется

Karina
16.02.2018
11:03:44
ребята, есть гем, который по номеру телефона определяет что за страна?

Dmitry
16.02.2018
11:04:24
а без указания сериализатора отдельно оно не будет работать? обязательно сериализатор писать под это дело?

у меня до этого все работало когда я передавал серивализатор прямо в джейсон и както особо отдельными файлами не делал сериализаторы

Denis
16.02.2018
11:05:17
а без указания сериализатора отдельно оно не будет работать? обязательно сериализатор писать под это дело?
в этом тоже не уверен, но лично я делаю отдельные сериализаторы. наследование же работает)

ребята, есть гем, который по номеру телефона определяет что за страна?
я такой не знаю, то есть гем countries, в нем есть коды стран (начало номера) с помощью него можно очень легко реализовать такой фунционал как тебе нужен

Karina
16.02.2018
11:06:35
ок, спс

Artur
16.02.2018
11:08:47
есть еще Phony, тоже хороший

Denis
16.02.2018
11:12:38
есть еще Phony, тоже хороший
он даже лучше подойтет конкретно под эту задачу что описана высше

Karina
16.02.2018
11:29:20
есть еще Phony, тоже хороший
всё равно там надо указывать код. это только через gem countries

Artur
16.02.2018
11:30:08
везде надо указывтаь код)))

Denis
16.02.2018
11:38:06
какие-то там печальные данные, казахстан записан как +7
если честно, то в проде такие фишки не юзал, по-этому тонкостей не знаю. всеголиш предложил как вариант)

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