Co to za zapis

class Order < ApplicationRecord
belongs_to :user
enum state: { new: ‘new’, failed: ‘failed’, completed: ‘completed’ }, _suffix: :order
end

Chodzi mi o ten zapis: Moze ktos wyjasni o co tu chodzi

enum state: { new: ‘new’, failed: ‘failed’, completed: ‘completed’ }, _suffix: :order

Deklaracja tzw. enuma, czyli typu wyliczeniowego. Oznacza to, że atrybut (kolumna) state może posiadać z góry wymienione wartości. Wartością opcji state jest w tym przypadku hash, który definiuje mapowanie wartości atrybutu do wartości trzymanej w bazie. W tym wypadku oznacza to ni mniej ni więcej, że wartość w bazie będzie taka sama jak ta przypisana. Dlaczego więc został w ogóle tu użyty enum? Pewnie dlatego by mieć automatycznie wygenerowane dodatkowe metody.

Do poczytania: ActiveRecord::Enum

zapis:
_suffix: :order
co oznacza w tym przykładzie ?

_suffix (podobnie jak state) jest parametrem nazwanym (keyword argument) a jego wartość to :order (symbol).

1

Hi. Next question
W jaki sposób działa to przypisanie, wywołanie, blok :
cart = yield

Nie odbierz tego złośliwie, ale google: ruby yield.

a czy to nie jest przypadkiem do notation z dry monads?
https://dry-rb.org/gems/dry-monads/1.3/

[edit]

class Order < ApplicationRecord
belongs_to :user
enum state: { new: ‘new’, failed: ‘failed’, completed: ‘completed’ }, _suffix: :order
end

tworząc enum w pakiecie dostajesz helper mehtods - na przykład order.failed?. _suffix: :order zmienia składnię tych helperów - w tym przypadku będą one order.failed_order?.

ten artykuł to ładnie opisuje