
Amit
12.05.2018
04:59:12
Что ты имеешь виду бьем по не буквам?

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
05:00:23
прочёл криво значит
кстати никто не сталкивался с кастомным контроллеров сессий у девайса?
я каптчу добавил и если она не валидна - пытаюсь просто сделать render :new
а сессия появляется и пользователь становится залогиненный, хоть и выполняется условие рендера да и только?

Google

Sergii
12.05.2018
05:04:22
string = "привет, мой друг, привет"
string.split(%r{[^[[:word:]]]}).count('привет')
=> 2
%)

Amit
12.05.2018
05:07:06
Объясни в чем разница друг, объясни. Я эти конструкции с символами %, ^ еще не учил)

Dmitry
12.05.2018
05:07:31

Sergii
12.05.2018
05:42:06
(=
хорошее имя

Decadent
12.05.2018
05:42:52
Я его скоро наизусть уже выучу
По всему телеграму разбросался

Stanislav
12.05.2018
06:50:21
пора банить

Amit
12.05.2018
10:26:19
Записал выражение в таком виде if variable.nil? == true, IDEшка пишет Expression can be simplified, но по ссылке не нашел подсказки. Может кто подскажет как изящней записать?

Dmitriy
12.05.2018
10:30:52

Google

Dmitriy
12.05.2018
10:31:02
незачем сравнивать

Amit
12.05.2018
10:43:15

Alex
12.05.2018
10:44:36

Amit
12.05.2018
10:46:10

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
10:46:33
хотя погодите-ка, я понял ?
или нет

Dmitry
12.05.2018
10:47:39
Ты сам ответил на свой вопрос)

Artur
12.05.2018
10:47:44

Alex
12.05.2018
10:48:09
или нет
[1] pry(main)> nil.nil?
=> true
[2] pry(main)> true.nil?
=> false
[3] pry(main)> false.nil?
=> false
[4] pry(main)>

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
10:48:33
но выглядит странно)

Dmitry
12.05.2018
10:49:08
Выглядит ожидаемо)

Alex
12.05.2018
10:49:13

Amit
12.05.2018
10:50:05

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
10:50:23
мля, я условие провтыкал
я думал он сравнивает на Нил и на тело
а он просто проверяет нил тру
тогда конечно ожидаемо)

Иван
12.05.2018
10:51:22
тернарный оператор это и есть аналог if else

Google

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
10:52:12

Amit
12.05.2018
10:52:28

Иван
12.05.2018
10:53:02
и тут)

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
12.05.2018
10:53:05

Sergey
12.05.2018
11:08:06
Ребята, привет! Здорово, что есть такая группа! Может быть кому-то будет интересно, мы на следующей неделе во вторник будем проводить небольшой митап - Rubizza Hangout.
Если есть желание, присоединяйтесь!
https://vk.com/rubizza?w=wall-148949841_144

s
12.05.2018
11:44:22

Anton
12.05.2018
11:44:45

s
12.05.2018
11:44:48
путь к дерьмово реализованной логике - дерьмовый код и незнание используемых инструментов

Anton
12.05.2018
11:45:25
не конструктивно)
а нет конструктива. посмотри на модели, классический пример некосистентной логики в одном месте

s
12.05.2018
11:46:56
если вынести за скобки коллбеки, которые являются одной из опций инструмента, то где в моделях противоречия в логике?


Anton
12.05.2018
11:50:01
если вынести за скобки коллбеки, которые являются одной из опций инструмента, то где в моделях противоречия в логике?
(эх, если бы мне давали доллар за это)
смотри, у тебя в моделе: логика работы с базой, с дата объектом (энтити), валидация, колбэки, ассоциации между моделями, логика серелизации данных, логика того, что изменилось в инстансе, ActiveModel::SecurePassword (даже писать ничего не буду) и так далее
это похоже на неконсистентную логику?
(эх, если бы мне давали доллар за это)
смотри, у тебя в моделе: логика работы с базой, с дата объектом (энтити), валидация, колбэки, ассоциации между моделями, логика серелизации данных, логика того, что изменилось в инстансе, ActiveModel::SecurePassword (даже писать ничего не буду) и так далее
если что, вот, даже гайд открыл
http://guides.rubyonrails.org/active_model_basics.html
(эх, если бы мне давали доллар за это)
смотри, у тебя в моделе: логика работы с базой, с дата объектом (энтити), валидация, колбэки, ассоциации между моделями, логика серелизации данных, логика того, что изменилось в инстансе, ActiveModel::SecurePassword (даже писать ничего не буду) и так далее
ActiveModel::Lint::Tests
ActiveModel::Translation
ну и так далее
это похоже хоть на какую-то согласованность логики? по мне это похоже на свалку всего, что пригодиться

Google

Artur
12.05.2018
11:52:11
АСТАНАВИТЕС

Anton
12.05.2018
11:52:53
кэк

s
12.05.2018
11:53:10
там выше используя термин “неконсистентная логика” я подразумевал создание 2 точек входа, обе из которых должны быть последовательно использованы для сохранения объекта. без более высокоуровнего апи, который соберет это все вместе – это путь к неконсистентности, т.к. сохранение может потребоваться при обработке апи запроса, работы внутренних сервисов, из “админки"
то что ты описал, это не самый лучший дизайн

Alex
12.05.2018
11:53:58
ребята, кто-нибудь использовал xvfb с capybara-webkit внутри докер контейнера?
xvfb-run: error: xauth command not found


Anton
12.05.2018
12:01:07
там выше используя термин “неконсистентная логика” я подразумевал создание 2 точек входа, обе из которых должны быть последовательно использованы для сохранения объекта. без более высокоуровнего апи, который соберет это все вместе – это путь к неконсистентности, т.к. сохранение может потребоваться при обработке апи запроса, работы внутренних сервисов, из “админки"
так, почитал чуть дальше. на самом деле, вариант с колбэком тоже не консистентный, но в другом ключе. у тебя будет 1 точка входа, но зато точка входа будет брать на себя много ответственности. к тому же, рано или позно забудут что у тебя модель кроме сохранения еще нотификации шлет и проебутся, так что твоя согласованность тоже нарушится. ну или взять твой пример, админка, апи, вот все это. везде нужны разные валидации, появляются условия и дикая схема валидации, которая пытается описать все на свете. консистенстностью логики тут так то тоже не пахнет


s
12.05.2018
12:04:38
в контексте вопроса – это имо наилучшее решение, потому что советовать автору вопроса применять в этом месте DDD-штуки я бы не стал
менять модель в коллбеке перед сохранением я бы тоже не стал

Admin
ERROR: S client not available

s
12.05.2018
12:05:07
но я сильно уверен, что автору лучше сначала сделать так
потом написать тесты и понять, какое это днище, разруливать коллбек-хелл моделей
и тогда, при хорошем стечении обстоятельств он попробует вынести логику сохранения в отдельный объект
и на каждый случай свой

Anton
12.05.2018
12:06:09
так то лучший вариант для автора будет просто взять и сделать
а потом переделать

s
12.05.2018
12:06:42
да)
ActiveModel::Lint::Tests
если под классическим рейлвеем подразумевается использование вот этих коллбеков, то я согласен, что это плохой путь.
но тут я считаю, что это опция, которую просто не стоит использовать
не то сообщение зареплаил

Google

Anton
12.05.2018
12:19:44
в нем так то даже сервис объектов нет

s
12.05.2018
12:20:32
я книжку Фернандеса не дочитал
про классичейский путь)

Anton
12.05.2018
12:21:16
я даже хз кто это ?

s
12.05.2018
12:21:43
The Rails Way: Obie Fernandez
про рейслвей я лично зацепился потому что часто слышу как ругают рельсу
но как правило, проблема не в рельсе, а в том, как ругатели решают те или иные задачи

Mikhail
12.05.2018
12:23:58
Cтолько обсуждаете валидации каллбеки, рейлвей а про траллбейзер не вспомнили.

s
12.05.2018
12:24:13
а чего этоо вспоминать в этом контексте?
это же вообще сильно в сторону

Anton
12.05.2018
12:24:58

s
12.05.2018
12:25:02
или ты про то, что это набор заплаток?

Anton
12.05.2018
12:25:37

Mikhail
12.05.2018
12:25:46

s
12.05.2018
12:26:18
в рельсе вроде форм-обжекты не формализованы. т.е. как хочешь, так и делай сервис-объект для них
поэтому это не альтернатива, а дополнительный слой абстракции

Anton
12.05.2018
12:27:01


Undefined
12.05.2018
17:09:17
Всем привет. Подскажите пожалуйста в чем может быть проблема. Пытаюсь добавить теги к постам в блоге, сделал все как написано в руководстве: https://www.sitepoint.com/tagging-scratch-rails/, с тем лишь условием что у меня модель называется не post а article, но получаю ошибку: uninitialized constant Article::Tags.
Модели:
article.rb
class Article < ApplicationRecord
has_many :taggings
has_many :tags, through: :taggings
has_many :comments, dependent: :destroy
validates :title, presence: true, length: { minimum: 5 }
def all_tags=(names)
self.tags = names.split(",").map do |name|
Tag.where(name: name.strip).first_or_create!
end
end
def all_tags
self.tags.map(&:name).join(", ")
end
end
tag.rb
class Tag < ApplicationRecord
has_many :taggings
has_many :articles, through: :taggings
end
tagging.rb
class Tagging < ApplicationRecord
belongs_to :articles
belongs_to :tags
end
Жалуется вот на этот участок кода:
def all_tags=(names)
self.tags = names.split(",").map do |name|
Tag.where(name: name.strip).first_or_create!
end
end