PAGE TOP

アトトックラボ

20171127

jQuery プラグインを定義してみる

jQuery は重いけど嫌いじゃないです。

重い重いって言われながら、もう何年にもわたって第一線にいるわけでは、jQuery からの依存を100%断つことはなかなか難しい。逆にどっかで jQuery が何かしらの形で使われていれば、Yet Another な部分でも jQuery 使っておいた方がいい気もします・・・なんて独白はおいておきまして。とりあえず、Rails + Bootstrap でウェブなアプリを作れば意図的に外さない限り jQuery は使うことになりますし。

一応、jQuery プラグインの最低限の仕組みだけ理解しておきましょう。

jQuery.fn.NameOfPlugin = function() {
    this.change( function () {
      console.log($(this).val());
    })
};

NameOfPlugin 部分がプラグインの名前になります。

上のコードを $(input[type=text]) なDOMに適用してやると、入力されているテキストが変更された時にログを履くようになります。

  $( function () {
    $('input[type=text]').NameOfPlugin();
  });

あくまで基本的な定義の仕方ってだけのサンプルなので、そこに意味は求めないでください。


20171122

Railsのマイグレーションでidを追加しない

Railsでテーブルを作るときにidカラムは追加せずに、他のカラムをプライマリキーにしたい場合があります。
このような場合は、作成したマイグレーションファイルを修正して対応します。

モデルを作成

$ rails g model hoge code:integer name:string

作成したマイグレーションファイル

class CreateHoges < ActiveRecord::Migration[5.0]
  def change
  create_table :hoges do |t|
    t.integer :code
    t.string :name

    t.timestamps
  end
  end
end

20171120

Ruby で配列を freeze する話

Ruby で配列を freeze したかったら以下。

irb(main):001:0> LIST = ['001', '002', '003'].freeze
=> ["001", "002", "003"]

ただし上のコードで freeze されるのは LIST という配列オブジェクト自体で、配列の要素の値は freeze されない。


20171116

コメビツくんの缶バッチ作りました

2017.11.20(月)18:00までは缶バッジが200円引になるのでお買い得!SUZURIにて販売中です!
https://suzuri.jp/atotok


20171115

jQuery でチェックボックスの状態を取得/設定する

jQuery でチェックボックスの状態を取得したり設定したり、結構よく使うのに方法がいろいろあったりします。ただ現時点(2017年11月)での最適解はおそらく今回紹介するもの。

<input type="checkbox" name="checkbox_1" checked>
<input type="checkbox" name="checkbox_2">

チェックボックスがチェックされているかを取得する。

// 便宜的に式で評価してみる
if ( $('input[name=checkbox_1]').prop('checked') ) {
  console.log('true');
} else {
  console.log('false');
}

// 別に以下でも確認できる
console.log( $('input[name=checkbox_1]').prop('checked') );

jQuery のセレクタで書いている部分はお好きに。

次にセレクタで指定したチェックボックスにチェックを入れる。

$('input[name=checkbox_2]').prop('checked', true);

最後に同じ方法でセレクタで指定したチェックボックスのチェックを外す。

$('input[name=checkbox_2]').prop('checked', false);

このくらいはテンプレ的に覚えておくと便利です。


20171113

ActiveRecordのenum

ActiveRecordのenumが便利です。
enumを使用することで値の判定などわかりやすいコードが書けるようになります。
http://api.rubyonrails.org/v5.1/classes/ActiveRecord/Enum.html
例えば、Spotモデルに下書き(draft)と公開(published)の状態をもつステータスを追加するとします。

Spotモデルにstatusカラムを追加するマイグレーションを作成

rails g migration add_status_to_spot status:integer

Spotモデルにenumを追加

class Spot < ApplicationRecord
  belongs_to :prefecture
  belongs_to :area

  has_many :spot_photos
  has_many :spot_galleries
  validates :title, presence: true
  validates :prefecture_id, presence: true
  validates :area_id, presence: true
  validates :latitude, numericality: true
  validates :longitude, numericality: true

  enum status: { draft: 0, published: 1}
end

statusの値をenumで定義します。
statusが0の場合はdraft、1の場合はpublishedにします。


アトトックラボとは?

株式会社アトトック のメンバーが技術の話、デザインの話、キャラクターの話、ときどき脱線してガジェットの話やライフハックの話など好きなことを書いています。


最近の記事


タグ