Railsでall_hourメソッドが欲しい

Railsの時間関係の便利なメソッド達 all_month, all_day などなど…

でもall_hour がない

作ってしまおう

class ActiveSupport::TimeWithZone
  def all_hour
    beginning_of_hour..end_of_hour
  end
end
Time.current.all_hour 

# => Mon, 26 Jun 2017 19:00:00 JST +09:00..Mon, 26 Jun 2017 19:59:59 JST +09:00

大満足

RailsでDBに配列Arrayを保存する

RailsでDBに配列を保存する方法

serialize :column_name を指定

RailsでDBに配列を保存する方法(サンプルコード)

class Hoge < ApplicationRecord
  serialize :arr
end

hoge = Hoge.new(arr: [1, 2, 3])
puts hoge.arr # => [1, 2, 3]

Arrayと明示するとこういう使い方もできるみたい

class Hoge < ApplicationRecord
  serialize :arr, Array
end

hoge = Hoge.new
hoge.arr << 1 << 2 << 3
puts hoge.arr # => [1, 2, 3]

Railsでprimary_keyとforeign_keyの両方を指定して主キーではないカラムで関連付けする

こんな関連付けのモデルがあったとして

class Atable < ApplicationRecord
  has_one :btable
  has_one :ctable
end

class Btable < ApplicationRecord
  belongs_to :atable
end

class Ctable < ApplicationRecord
  belongs_to :atable
end

bからcを呼び出すのに

Btable.find(1).atable.ctable

としなきゃいけないのはだるい

btables.atable_id = ctables.atable_id の条件で関連付けしたい

primary_key, foreign_keyを両方指定して関連付けをする

こうなる

class Atable < ApplicationRecord
  has_one :btable
  has_one :ctable
end

class Btable < ApplicationRecord
  belongs_to :atable
  has_one :ctable, primary_key: :atable_id, foreign_key: :atable_id
end

class Ctable < ApplicationRecord
  belongs_to :atable
  belongs_to :btable, primary_key: :atable_id, foreign_key: :atable_id
end

Huawei mate9でGoogleカレンダーの予定が勝手にキャンセル、辞退されるバグ

Huawei mate9にGoogleアカウントをひも付けたら勝手に他の人の予定をキャンセルや辞退させる問題がおきました。

調べてみるとHuaweiのデフォルトのカレンダーにG suiteのアカウントを連携させると発生するバグらしい。

なのでデフォルトカレンダーの権限をオフにして使わないようにします。

対処法

設定>アプリ>カレンダー>権限 を開いて各権限をOFFにする。 f:id:kuronekopunk:20170608112152p:plain

Googleカレンダーアプリなどの他のアプリを使うことになります。

参考サイト

【要注意】Huawei製スマホでGoogleカレンダーを使用する際の注意 - ゲームドライブ

他の方の記事を見るとHuawei P9をAndroid7.0にアップデートしたらひも付けていたG suiteアカウントで同じバグが発生したようです。