ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

初めのアルファベットに該当するレコードのみ表示するメソッドの定義の仕方

models def self.by_letter(letter) where("lastname LIKE ?", "#{letter}%").order(:lastname) end controller def index if params[:letter] @contacts = Contact.by_letter(params[:letter]) else @contacts = Contact.order('lastname, firstname') end …

姓と名でわけて入力するが、出力は毎回姓と名を連結するときのメソッドの作成方法

app/models/hoge.rb def name [firstname, lastname].join(' ') end #もしくは def name firstname + lastname end

RailsでAさんは同じ連絡先を登録できないが、AさんとBさんで同じ連絡先を登録できるバリデーションの設定方法

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で掲載期間の有無を設定する実装方法

チェックボックスにチェックを入れた時はずっと掲載し続ける場合の実装方法 check_boxは引数をつけなかった場合、チェックした場合は1を、つけない場合は0が値として渡される。 form.html.erb <%= form.check_box :no_expiration %> アクセスメソッドを定義…

Railsでエラーを起こした入力欄にCSSを適用させる方法

railsでエラーを起こした入力欄はclass属性がfield_with_errorsのdivタグで囲まれる。 CSSでdiv.field_with_errorsにデザインを記述すれば、エラーを起こした入力欄に色をつけられる。 div.field_with_errors { background-color: #fcc; padding: 2px;

Rubyのputsメソッド、printメソッドはto_sメソッドを定義すると

改訂3版基礎 Ruby on Rails (KS IMPRESS KISO SERIES)でどうしてもわからないことがあった。 untitled.rb class Robot def initialize(name) @name = name @x = @y = 0 end def move(x,y) @x += x; @y += y end def to_s "#{@name}: #{@x},#{@y}" end end ro…

素数を見つけるプログラムをrubyで

処理としては 1.2.3.4.と連番の配列を用意する 2から順番にその倍数を配列から削除していく 削除するものがなくなったら終了。 これくらい簡単にかけるようになりたい。 引用元

IPアドレスがわからない場合

ifconfig で調べる。

2から10までの数字を変数aryに配列で格納してください。

模範解答はこちら

ブロックの中にnextを用いる

1から10までの和を取得するtotalメソッド。 もし、2で割り切れなければnextでブロックのその回の実行を中断している。 中断するのはその回だけなので、続きはそのまま実行される。 すなわち1から10までの偶数のみの和を返す。 next 0のように引数を与…

ブロックの実行を制御

num = 4までの結果が返ってきそうだが、ブロックの中でbreakを呼ぶと、ブロックつき呼び出しの場所まで一気に戻ってくるので、totalメソッドの中の計算の結果を返す処理などがすべて飛ばされてしまう。

Hash#each_with_index

Hash#each_with_indexのブロック変数は2つ。 yeild([キー,値], インデックス)の形式で渡される。

ブロック変数に複数の引数を渡す

ブロック変数の使い方

ブロック変数を使うと、ある範囲の引数に同じ処理を施せるんだな。 例は、1から10までの和 1から10までの2乗の値の和 を出力している。

hostファイルを編集して、独自のホスト名を設定する方法

hostファイルを編集して、独自のホスト名を設定する方法 ホストOSで $ cd $ cd /private/etc $ ls #lsコマンドでhostsファイルがあるか確認できる。 $ vi hosts #編集する [i]を押してインサートモードに ## # Host Database # # localhost is used to confi…

railsでmysqlのエラーが起きた時の対処法

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でregistrations/newでpassword__confirmationはいらなかった

railsのdeviseを使う際に、registration/new.html.erbでpassword_confirmationカラムは入力必須で、このカラムをなくすには何かコードを書くか削除する必要があると思っていた。 code4startupでviewから単純に削除していたので、webricksで挙動を試してみた…

Railsでリセットボタンの実装方法

リセットボタン<input type="reset" ?>と普通のボタン<input type="button" ?>を作るためのメソッドはRailsには存在しない。一般的なタグを作るメソッドtagで次のように記述するか、<input type="reset" value="リセット" ?>のようにHTMLのタグを直接記述する。 <%= tag :input, :type => 'reset', :value => 'リセット' %> <%= f.button "リセット…

Railsで-bash: bundle: コマンドが見つかりませんの時の対処法

gem install bundlerとすれば解消した

クッキーとセッションの違い

クッキー → ブラウザが保持するキーと値 セッション → webサーバーが保持するキーと値

Railsのアセット・パイプライン

アセットとは「資産」の意味で、CSS、JavaScript、画像といったファイルのことを指す。 アセット・パイプラインとは次の機能からなる。 ・変換 Sassで書かれたスタイルシートを CSSCSSに変換したり、CoffeeScriptのスクリプトをJavaScriptに変換する ・圧縮…

railsでバリデーション時にエラーを起こした入力欄にCSSを適用する方法

railsでバリデーションに引っかかった時は、エラーを起こした入力欄は、classがfield_with_errorsのdivタグで囲まれる。 CSSでdiv.field_with_errorsにデザインを記述すれば、エラーを起こした入力欄に色をつけることができる。 div.field_with_errors { bac…

railsで削除フラグを使いレコードを残しておく方法

destroyメソッドはSQLのDELETE文を実行して、テーブルからレコードを完全に消してしまう。 通常はこれでよいが、レコードを残したまま削除「状態」にしておきたいケースもある。 例 ・レコードの記録を残しておきたい時 ・退会させたユーザーを復活させたい…

RailsのCSRF対策

CSRFはクロス・サイト・リクエスト・フォージェリの略で、ウェブサイトへの攻撃手段の1つ。攻撃対象のウェブサイトに送信を行うフォームやリンクなどを別のサイトに用意し、ログイン中のユーザーにクリックさせる仕掛け。 勝手にブログの投稿を行わせたり、…

Railsでリソースベースのルーティングにアクションを追加する方法

アクションを追加するには、resourcesメソッドにブロックを渡し、ブロックの中で「HTTPメソッドを表すメソッド アクション名」を記述する。 その際、会員一覧のようにリソースの集合を表すアクションは、collectionメソッドのブロックで囲む。 会員の状態変…

githubとbitcuhetの違い。

プログラミングを単独でするなら、Bitbucketの方がいいね。なぜなら、単独で使うなら無料で利用できるから。 GitHubとBitbucket GitHubとBitbucketは、現時点でのGitリポジトリの2大人気サイトです。両者のサービスは非常に似通っています。どちらも、Gitリ…

modelで次、前ボタンの実装方法

単純に考えると、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は一味違かった

youtubeも素晴らしいサービス。 wistiaでも一味違った。 リードを獲得するため、メールアドレスを入力してくれた人だけに動画を見せてあげる。 誰(セッション)がどの動画をどれぐらい見たのかをトラッキングする。 HubSpot、Marketo、MailChimpなどマーケ…