ckeditorのスタイルにカスタムスタイル追加する方法

Railsに脆弱性があったみたいですね
Rails 3.2.22, 4.1.11 and 4.2.2 have been released and more

さっそく今やってるPGのrailsのバージョンをあげました。

さて
WYSIWYGエディタのckeditorがすごくいい感じで使わせてもらっています。

gemがあったので私はこれを使ってckeditorを利用しています。
ckeditor

今回はこのckeditorにプルダウンで表示されるスタイルをカスタマイズする方法です。

Read on →


railsでuser_idをurlに付与して引き回す方法

特定のパラメータを常にurlに付与する方法です。

urlにuser_idをクエリなどにふくめておくとgoogle analyticsとか使った時に、特定のユーザがどういうページにアクセスしたかわかりユーザの行動分析に使えたりします。

なのでurlに自動でuser_id=[:user_id]の形式でアクセスしてるページのuser_idが付与されると非常に便利そうです。

参考になったのはjpmobileのソースでした(docomo端末の場合にguidを自動付与したりしています)
docomo_guid.rb

Read on →

Deviseで特定の条件のみパスワードの検証をスキップする

1
2
3
#開発環境  
rails 4.2.1
devise 3.4.1

deviseを使っていて、ユーザモデルに仮登録状態を作りたいと思います。
仮登録の段階ではパスワードはまだ要求されず。
最後の最後でパスワードを設定して本会員登録完了といったフローです。

deviseでは対象モデルにdevise :validatableに設定している場合はメールアドレスやパスワードの検証が走ります。
今回はパスワード以外のチェックはやってほしいため:validatableの宣言を外すだけではダメです。

Read on →

deep_rejectが欲しくてrefinementsで実装しようとした話

再帰的に条件判定を行うrejectが欲しくなりました。
こういう動きです。

1
2
3
4
5
6
7
8
[1,2].deep_reject{|val| val == 1 }  # => [2]

[1,2, [1,2,3]].deep_reject{|val| val == 1 } # => [2, [2, 3]]

[1, 2, {a: "a", b: "b" }].deep_reject{|key, val| key == :a } # => [1, 2, {:b=>"b"}]

[1, 2, {a: "a", b: "b", c: {a: "c", c: "d"} }].deep_reject{|key, val| key == :a }
# => [1, 2, {:b=>"b", :c=>{:c=>"d"}}]

かなり便利そうです。

Read on →

モデルのattributeに変更がなくてもnested_attribute_forを使っているモデルでcallbackを発生させる

任意の条件でnested_attribute_forの対象の保存処理を走らせる方法です

ファイルのアップロード用のモデルを作っていてActionDispatch::Http::UploadedFileを一旦attr_accessorのアクセサで受けたあとcallbackでファイル名やファイルサイズをmodelクラスの該当のカラムに設定するという処理を書いておりました。

ファイルは可変にアップロードしたかったのでこのモデルの親モデルから参照するようにして、nested_attribute_forで親モデル更新時に一緒に更新するようにします。

1
2
3
4
5
class Oya < ActiveRecord::Base
  has_many :files, dependent: :destroy

  accepts_nested_attributes_for :files, allow_destroy: true
end
1
2
3
class File < ActiveRecord::Base
  attr_accessor :file
end
Read on →