宝石部屋

プログラミング(主にRuby on Rails)のメモ帳

モデルについて

モデル(person.rb)

 

class Person < ActiveRecord::Base

    # バリデーション

    validates ...

 

    # アクセサメソッド

    attr_○○○ ...

 

    # インスタンスメソッド

    def ○○○

    end

 

    # クラスメソッド

    class << self

    def ○○○

    end

 

end

 

バリデーション:値の形式や範囲が間違っていないかを調べ、適切なエラーメッセージを返す

アクセサメソッド:読み出し、書き込み用メソッド

インスタンスメソッド:「変数メソッド名」として、オブジェクトから情報を得たり、オブジェクトを操作することができる

クラスメソッド:「クラス名メソッド名」として、クラス自体に特定の機能を持たすことができる

 

 

 

 

リソースベースのルーティングについて

resourcesメソッドリソースを取得すると、コントローラのアクションを表すパスを

「リソース名 + _path」の形のメソッドで取得できるようになる。

 

例として、resources :persons(リソース名の複数形)とすることで、

indexアクション:  persons_path

showアクション:  person_path(person)

newアクション:  new_person_path

editアクション:  edit_person_path(person)

createアクション:  persons_path

updateアクション:  person_path(person)

destroyアクション:  person_path(person)

これらのメソッドが使えるようになる。

個別のリソースを扱うアクションへのパスを得るためには、引数にモデルオブジェクトを渡す

 

ちなみに、このようにも書くことが可能。

link_to @person.name + "の詳細", @person(showアクション)

link_to @person.name + "を削除", @person, method: :delete(destroyアクション)

 

逆に、idパラメータを取らないアクションでは「_path」の部分をとった文字列をシンボルにしたものが使える。

link_to "会員一覧", :persons

link_to "新規登録", :new_person

シンボルについて

シンボルとは、名前を表すオブジェクトのことである。

文字列を整数で表したものであり、文字列ではない。

  • メソッド、変数の名前
  • URLのパス
  • ハッシュのキー

などで使われる。

 

シンボルの例として、

x = "abc"

y = "abc"

puts x == y           # true

puts x.equal?(y)    # false

これに対して

x2 = :abc

y2 = :abc

puts x2 == y2           # true

puts x2.equal?(y2)    # true

==は文字列を比較しているのに対し、equal?はインスタンス(実体)を比較している。

 

また、ハッシュ(連想配列とは、配列のようにオブジェクトをまとめるもの。

これも例として、

dog = {

    name: "Pochi",

    gender: "male",

    age: 4

}

name, gender, age はキー、Pochi, male, 4 は値と呼ばれ、

ハッシュの要素は、キーと値のペアからなる。

 

シンボルとハッシュについてでした。