このエントリは糖質制限 Advent Calendar の 2 日目のエントリです。前日は @chiastolite さんの「半年の糖質制限生活の経過報告的なにか」でした。
a_suenami と申します。ネット界隈では「糖質警察」として多少知られてると思います。よろしくお願いします。 僕の糖質制限への熱い想いはこのへんを見ていただければわかるかと思います。
| class SampleService | |
| extends ActiveModel::Model | |
| validates :name, presence: true | |
| def initialize(attributes) | |
| # ... | |
| end | |
| def run! |
このエントリは糖質制限 Advent Calendar の 2 日目のエントリです。前日は @chiastolite さんの「半年の糖質制限生活の経過報告的なにか」でした。
a_suenami と申します。ネット界隈では「糖質警察」として多少知られてると思います。よろしくお願いします。 僕の糖質制限への熱い想いはこのへんを見ていただければわかるかと思います。
| WITH RECURSIVE x(n, a, b) AS ( | |
| SELECT 1 AS n, 0 AS a, 1 AS b | |
| UNION ALL | |
| SELECT n + 1, b, a + b FROM x | |
| ), | |
| fibonacci AS ( | |
| SELECT n, a AS fibonacci FROM x | |
| ) | |
| SELECT * FROM fibonacci LIMIT 30; |
| WITH RECURSIVE fizzbuzz(n, fizzbuzz) AS ( | |
| VALUES (1, '1') | |
| UNION | |
| SELECT | |
| n + 1, | |
| CASE | |
| WHEN (n + 1) % 15 = 0 THEN | |
| 'FizzBuzz' | |
| WHEN (n + 1) % 3 = 0 THEN | |
| 'Fizz' |
| (function 繰り返す() { | |
| 食べる(); | |
| 寝る(); | |
| コード書く(); | |
| 繰り返す(); | |
| })(); |
| # CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; | |
| # USE demo; | |
| # CREATE TABLE articles (id BIGINT PRIMARY KEY); | |
| # CREATE TABLE comments (id BIGINT PRIMARY KEY, article_id BIGINT NOT NULL, status SMALLINT NOT NULL); | |
| require 'active_record' | |
| ActiveRecord::Base.establish_connection( | |
| adapter: 'mysql2', | |
| host: 'localhost', |
こんな感じで雑に思いついた。
MemberAggregate::Member をアレコレしてから store とかするのだるいので Command クラスにして、そこから直接 AR で副作用起こす感じ。| class ProductMapper | |
| def attributes | |
| [:id, :name, :price] | |
| end | |
| def self.map(relation, limit: nil) | |
| mapping_type = Struct.new(attributes) | |
| relation.limit(limit).pluck(attributes).map do |record| | |
| mapping_type.new(record) | |
| end |
| class Person # エンティティ | |
| attr_reader :name, :yakiniku_treatment_type | |
| def initialize(name, yakiniku_treatment_type, credit_card_number, cash_amount) | |
| @name = Person::Name.new(name) | |
| @yakiniku_treatment_type = Person::YakinikuTreatmentType.new(yakiniku_treatment_type) | |
| end | |
| def 焼肉を奢る | |
| @yakiniku_treatment_type.奢る |