Ruby on Rails
app/models/hoge.rb def name [firstname, lastname].join(' ') end #もしくは def name firstname + lastname end
app/models/contact.rb class Contact < ActiveRecord::Base has_many phones phoneモデルで同じcontact_idは持てないようにuniqunessな制約をつけると実現できる。 app/models/phone.rb class Phone < ActiveRecord::Base belongs_to :contact validates :p…
railsでエラーを起こした入力欄はclass属性がfield_with_errorsのdivタグで囲まれる。 CSSでdiv.field_with_errorsにデザインを記述すれば、エラーを起こした入力欄に色をつけられる。 div.field_with_errors { background-color: #fcc; padding: 2px;
bin/rake db:create エラーが起きる /home/vagrant/.gem/ruby/2.1.0/gems/activerecord-4.1.0/lib/active_record/connection_adapters/connection_specification.rb:190:in `rescue in spec': Specified 'mysql2' for database adapter, but the gem is not …
railsのdeviseを使う際に、registration/new.html.erbでpassword_confirmationカラムは入力必須で、このカラムをなくすには何かコードを書くか削除する必要があると思っていた。 code4startupでviewから単純に削除していたので、webricksで挙動を試してみた…
リセットボタン<input type="reset" ?>と普通のボタン<input type="button" ?>を作るためのメソッドはRailsには存在しない。一般的なタグを作るメソッドtagで次のように記述するか、<input type="reset" value="リセット" ?>のようにHTMLのタグを直接記述する。 <%= tag :input, :type => 'reset', :value => 'リセット' %> <%= f.button "リセット…
クッキー → ブラウザが保持するキーと値 セッション → webサーバーが保持するキーと値
アセットとは「資産」の意味で、CSS、JavaScript、画像といったファイルのことを指す。 アセット・パイプラインとは次の機能からなる。 ・変換 Sassで書かれたスタイルシートを CSSCSSに変換したり、CoffeeScriptのスクリプトをJavaScriptに変換する ・圧縮…
railsでバリデーションに引っかかった時は、エラーを起こした入力欄は、classがfield_with_errorsのdivタグで囲まれる。 CSSでdiv.field_with_errorsにデザインを記述すれば、エラーを起こした入力欄に色をつけることができる。 div.field_with_errors { bac…
destroyメソッドはSQLのDELETE文を実行して、テーブルからレコードを完全に消してしまう。 通常はこれでよいが、レコードを残したまま削除「状態」にしておきたいケースもある。 例 ・レコードの記録を残しておきたい時 ・退会させたユーザーを復活させたい…
CSRFはクロス・サイト・リクエスト・フォージェリの略で、ウェブサイトへの攻撃手段の1つ。攻撃対象のウェブサイトに送信を行うフォームやリンクなどを別のサイトに用意し、ログイン中のユーザーにクリックさせる仕掛け。 勝手にブログの投稿を行わせたり、…
アクションを追加するには、resourcesメソッドにブロックを渡し、ブロックの中で「HTTPメソッドを表すメソッド アクション名」を記述する。 その際、会員一覧のようにリソースの集合を表すアクションは、collectionメソッドのブロックで囲む。 会員の状態変…
単純に考えると、id+1もしくはid-1で実装できる。 class Video < ActiveRecord::Base def next Video.find(id+1) end def prev Video.find(id-1) end end しかし、この実装方法だと問題が生じる。 idが1,2,3,4,5,6が存在して、途中で例えばid=4を削除したと…
youtubeも素晴らしいサービス。 wistiaでも一味違った。 リードを獲得するため、メールアドレスを入力してくれた人だけに動画を見せてあげる。 誰(セッション)がどの動画をどれぐらい見たのかをトラッキングする。 HubSpot、Marketo、MailChimpなどマーケ…
materializecss.com bootstrapだけかと思っていたら、かなり似ているサービスがあった。 javascriptのコードも埋め込まないといけないようで、少し手間な気がする。。
is not a numberやcan't be blankなどのエラーメッセージの順番は、バリデーションを実行した順番になる。 これはモデルクラスの中でvalidatesメソッドやvalidateメソッドを並べた順番になる。 フォームの入力欄の並びと同じ順でエラーを表示したいときは、v…
日本語化 gemパッケージrails-i18nを使う bundle install後はサーバー再起動すること エラーオブジェクトのaddメソッドの第2引数は、acceptedやblankなどのエラー名をシンボルで指定できる。 モデルのエラーオブジェクトはerrorsメソッドで取り出せる。 エ…
例えばtweetするときに、tweetしたuserと関連付けたい。 まずはtweetモデルにuser_idカラムを追加して、どのuserの投稿か判別するようにする。 さらに、モデル間のアソシエーションをする。 tweetを投稿するviewのformからuser_idを選択もしくは、hidden_fie…
画像ファイルのアップロードのバリデーションを独自で定義してみた。 定義したのはcheck_imageメソッド。名前は任意で構わない。 if !['.jpg', '.png', '.gif'].include?ではjpg,png,gifファイルだったら、エラーにする。 errors.addでerrors連想配列にimage…
indexにnameをつけたい場合はnameオプションでindex名を指定する。 add_index :favorites, [:tweet_id, :user_id], unique: true, name: 'TWEET_ID_USER_ID_UNIQUE' 例2 remove_index :members, name: 'name_index'
プログラミングをはじめて半年。 まだまだ世に出ているアプリのような、大そうなものは作ることはできない。 ネットで公開されている誰かのように、独学で爆速で成長して、独自のウェブサービスを公開できているわけでもない。 そんなすごい人たちと比較する…
参考にしたサイト。 Rails 4 submit modal form via AJAX and render JS response as table row - Eric London's Blog このサイトの通りに作成したら、本当にnewページをbootstrapのmodalで表示することができた。 なんでこの結果になるのかコードを読み込ん…
8月にスパルタキャンプに参加してから、日中仕事をして、その後はプログラミングの生活をずっと送ってきている。 仕事の後のプログラミングはけっこう大変。楽しいけれど、仕事で疲れている中、頭を使うプログラミング。土日もどっぷりプログラミングしてい…
stack over flowより 6 down vote favorite I'm making a Rails App. I'd like to implement a check box 'remember me' for users to skip enter password from next time with using Devise:rememberable.but I can't figure out how to implement. if you…
かなり悩みました。合わせると10時間くらいは悩んで、ググっていたような。PHPキャンプで講師の先生に条件分岐、アルゴリズムについて教えてもらったら(全然関係のないナベアツ、素数判定だが)、チェックボックスの実装についても閃いた。 まずは「規約…
HTTPのメソッド メソッド 機能 アクション GET リソースの要求 POST リソースの送信 HEAD ヘッダー部分だけを要求 PUT リソースの置換 PATCH リソースの一部更新 update DELETE リソースの削除 destroy 操作 Verb create POST read GET Update PATCH Delete …
gitを学ぶのに最適なサイト。 このサイトでとりあえず学びたい。 www.atlassian.com
memberを用いるとusers/:id/◯◯のようなルーティングを生成することができる。 コントローラでidをprams[:id]で受け取ることができるので、showやeditのようなuserひとりひとりに用いるアクションの場合にmemberを用いる。 collecitonを用いるとusers/◯◯のよ…
createアクションで投稿の保存に失敗した場合(バリデーションに失敗)、再度フォームを表示しないといけない。 これまではrender :newでtweets/new.html.erbで表示されていたが、フォームをtweetsフォルダ以外のviewに移した場合、今回はhome/top/html.erbに…
formからログインユーザーのIDを入れたり、選択式にすることもできる。 もしくはhidden_fieldとcurrent_user.idを用いて擬似的に自動的にログインユーザーのIDをformで送ることもできるが、下記では違う方法を紹介。 ストロングパラメータではuser_idを受け…