deepblue-will’s diary

JS、CSS,Ruby、Railsなど仕事や趣味で試した技術系のことを書いていきます。

React v16.2 ~ v16.7で入った新機能

ここ1年ぐらい古いverのReactで開発し続けていて、最近ようやく最新のReactに対応したのでここ1年ぐらいでどんな機能が追加されてのかまとめてみることにしました。

※ v16.5, v16.7は大きな機能追加がなかったみたいなので書いてないです

続きを読む

Angularの状態管理にMobXはいかがでしょうか?

Angular Advent Calendar 2018 19日目の記事です!

Angularの状態管理といえば、NgRxが一般的ですが、最近色々選択肢もいろいろでてきました。NgRxのReduxのような状態管理を行わずに、AngularのシングルトンなServiceを利用してRxJSのみ行うこともできますし、Akita のようなシンプルな状態管理のライブラリもでてます。(Angularのシンプルな状態管理ライブラリ Akita について - Qiita で紹介されてます!)

そこで今回はMobX というよりシンプルで簡単な状態管理のライブラリを紹介したいと思います。

続きを読む

Deviseで認証でつかう要素を変更する

久しぶりにdeviseを触ってて、認証方式のカスタマイズでハマったのでメモ。
email, passwordに加えてある要素で認証させたいときの解決方法です。
ベースは公式wikiに書いてあった方法を参考にしてます。
How to: Scope login to subdomain · plataformatec/devise Wiki

class User
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, authentication_keys: [:email, :subdomain]
  
  def self.find_first_by_auth_conditions(warden_conditions)
    to_adapter.find_first(warden_conditions)
  end
end
  • authentication_keys で認証に使う属性を指定する。ここで指定した属性はサインイン時にパラメーターとして送らないと認証が通らなくなるので注意
  • validatable を外す。validatable にはemailのuniquenessのバリデーションが定義されているので、同じemailが登録できなくなってしまうため。なのでemailのバリデーションが外れてしまうので、独自に実装する必要あり
  • find_first_by_auth_conditions は認証時にユーザを特定するために通るメソッド。ここを拡張することで認証を変えることができる。
    • to_dapter.find_firstwhere(condition).first と同じ動き。devise内部ではこのメソッドでクエリ発行している(キャッシュの機能がついてる)
    • User.invite! のときもこのメソッド通るので、 招待機能( :invitable ) をつけるときはこのメソッドを拡張すること。そうでない場合はwikiにある通り find_for_authentication でも良い