ノンカフェインであなたにやさしい

Rails,HTML,JavaScript,jQuery,PHP,CakePHPなど

Reactで Uncaught TypeError: Cannot read property 'setState' of undefined と怒られた時の対処方

コンストラクタで明示的にthisをbindして上げる必要があるらしい

constructor(props) {
  super(props);
  this.onChangeValue = this.onChangeValue.bind(this);
}

参考

ES6でReact使ってたらsetStateがundefinedとか怒られた件 - とっしぃのTech Memo

Reactで Uncaught TypeError: Cannot read property 'setState' of undefined と怒られる場合の対処法 - Qiita

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のpartialに変数を渡す方法

<%= render partial: 'hoges/index', locals: { moge: @user.moge } %>

localsで変数を指定するだけ

部分テンプレートでmogeが使えるようになります。

renderの後のpartialも必要。忘れそう…

# hoges/index.html.erb
<%= moge %>

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