Ruby
Ruby を新しくしようと思って、先日リリースされた RubyInstaller で Ruby 2.2.1 を入れて Rails をインストールしたのだが…。sqlite3 のバイナリがないところは百歩譲って良しとしよう。それは自前でビルドできる。しかし、何やら nokogiri なるものが悪さ…
Railsの初期データ投入時のデータをYAMLで指定するには - pblog おおっ、これは便利 !
ここが参考になりそう。 Railsで規約に沿わない古いデータを扱う - Qiita
GitHub のアカウント取得と GitHub for Windows のインストール The world’s leading software development platform · GitHub まぁこれをしないと始まりませんのでw2014/02/22 追記 : Aptana Studio 3 に内蔵の Git を使うという方法もある。Eclipse Kepler…
1. 前回の記事を参考に 64bit 版 SQLite3 をビルドし、sqlite3.dll をパスの通っているところに配置する(個人的には C:\SQLite のように別フォルダを作ってそこにパスを通すのをお勧め)。 2. 64bit 版の Ruby 2.0.0-p247(現時点での最新版)をインストール。 …
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyappRails のネガキャンですか、と思って読んでみたがとんでもない、ちゃんとした記事で好感が持てた。しかしコメントがあまりに的外れちゃんなのでかいつまんでツッコミを…
実際の出力例です。
前回からの続きです。モデル同士のアソシエーションを定義します。 class Customer < ActiveRecord::Base has_many :sales has_many :products, :through => :sales end class Product < ActiveRecord::Base has_many :sales end class Employee < ActiveRec…
次に、中間テーブルが外部キー以外のデータを持つ場合について考えます。使用するアプリは 顧客(customer) 商品(product) 従業員(employee) 支店(branch) 売上(sale) のデータを持っているとします。モデルの作成から始めましょう。 rails g model customer …
状況 従業員は本店・支店の少なくともいずれかに属し((両方に属する場合もあり、その関連は従業員(employees)と支店(branches)を中間テーブル branches_employees で結びつけている。))、上司(manager)と部下(assistants)がアソシエーションで紐付けられてい…
今度は License の側から Employee のリストを取得してみましょう。 rails g controller licenses indexapp/views/licenses/index.html.erb <h1>資格取得者一覧</h1> <table border> <thead> <tr><th>資格</th><th>取得者</th></tr> </thead> <tbody> <% @licenses.each do |l| %> <tr> <td><%= l.name %></td> <td><%= l.employees.empty? ? 'なし' : l</td></tr></tbody></table>…
前回はアソシエーションを定義するところまで進めました。今回はそのアソシエーションを実際に利用してみます。まずはコントローラーから。 rails g controller employees index showモデルに対応するテンプレートを作成します。 app/views/employees/_emplo…
今「一人の従業員が複数(0 個も含む)の資格を持っている」「ある資格を持っている従業員が複数(0 人も含む)いる」という状況を考えます。これは多対多の関係ですが、RDBMS では多対多の関係をそのまま表現することができないので中間テーブルを用います。ま…
初心のときにありがちな書き方は def fact(n) if n == 0 then 1 else n * fact(n - 1) end end n が負のときどうするの、っていうのはとりあえず置いといて、まぁ再帰を知ってるのはいいことだけど、Ruby ならではのうまい書き方がある。 class Integer def …
例えば 100 以下の偶数の配列を作りたければ even = (0..50).map{ |i| i * 2 } とすればいい。 [1,10,100,1000,10000,100000,1000000] のような 10 のべき乗の配列も (0..6).map{ |i| 10 ** i } で O.K.2013/07/14 追記 : 100 以下の偶数、ということをもう…
Rails をインストールしてアプリケーションを作る(rails new)とき、自動的に bundle install が走って、その際に sqlite3 もインストールされるのだが、現状 rubygems で配布されている sqlite3 には Ruby 2.0.0 向けのバイナリが含まれていないため、そのま…
Rails で 1 対多の関係を示すときは 1 の方に has_many、他の方に belongs_to をつければよいのでわかりやすいのだが、1 対 1 のときはどっちが has_one でどっちが belongs_to なのか混乱することがままある。その場合は「主従関係」を考えてみるといい。主…
Ruby on Rails を使っていて rails new した後に自動で走る bundle install がエラーを出してコケるので原因を調べていたところ、こんな記事に当たりました。bundle install時にエラー - マオの徒然開発日誌ほほぅ…と思いながら Gemfile の source 'https://…
View で使う変数を定義したいので Controller から作る。app/controllers/major_cities_controller.rb class MajorCitiesController < ApplicationController def index @cities = City.all end def show @city = City.find(params[:id]) end end
まずは Model をポチポチと。 > rails g model district name:string --timestamps=false > rails g model city name:string pref_name:string designated_day:date area:float population:integer district_id:integer --timestamps=false
先日お題として出した Web アプリケーションを早くも Ruby on Rails で再現してしまいました。ソースは近日中に公開します。
Ruby には 日付や時刻の表示形式を指定できる strftime メソッドが用意されているが、例えば今日の日付だと # coding: utf-8 require 'date' d = Date.today puts d.strftime('%Y 年 %m 月 %d 日') で実行すると 2013 年 01 月 09 日と表示されてしまう。こ…
では前回作ったアクションが正常に動作するか見てみましょう。前回、新規にデータを登録した状態から。しかしここで問題発生。「いろは商事」ではなく「いろは物産」が正しい名称でした。修正しなければなりません。詳細を開きます。「編集」ボタンと「削除…
いよいよ edit, update, destroy を作ります。データの編集と削除は詳細画面からできるようにしたいので、show の View をまず修正します。sample/app/views/customers/show.html.erb <h1>顧客詳細</h1> <table border> <tr><th>顧客 ID</th><td><%= @customer.id %></td></tr> <%= render @customer %> </table> <table> <tr> <td><%= </td></tr></table>…
いよいよ残る edit, update, destroy を作っていきますが、その前に使いまわしの出来る部分を部分テンプレートにしておきます。sample/app/views/customers/_customer.html.erb <tr><th>顧客名</th><td><%= customer.name %></td></tr> <tr><th>連絡先</th><td><%= customer.phone %></td></tr> sample/app/views/cu…
実行してみる いつものコマンドでサーバを立ち上げて実行してみましょう。「新規登録」というボタンが追加されていますね。さっそくクリックしてみましょう。登録用のフォームが出てきました。
これでおしまいだと思った ? 残念さやかちゃんでした ! wせっかくだからアプリケーションっぽくどんどん作り込みましょう。今度は新規登録フォームを作ります。その前に、自動生成されたテストコード用のファイルを修正しておきます。 sample/test/functiona…
ルーティングの確認 sample ディレクトリで > rake routes を実行してみてください。 customers GET /customers(.:format) customers#index POST /customers(.:format) customers#create new_customer GET /customers/new(.:format) customers#new edit_cust…
おまけ。 rails generate → rails g rails server → rails s rails destroy → rails d のように rails コマンドには省略形があります。覚えておくと便利 ?
前回までは「RESTful なインターフェース」ということを考えずにとりあえずアプリケーションを作りましたが、Rails の世界ではこの「RESTful なインターフェース」に沿ってルート設計をするのが基本であるとされています。REST とは「REpresentational State…