tixture55’s diary

主にプログラミング関係の日記です。

Railsの値取得とrailsコマンドを使ったDB接続

Railsを使ったアプリのソースコードを読んでいて戸惑ったこと、理解したことの雑記です。

 

突然viewファイルに登場するみたことないコロン付きのメソッド、どこから来ているのか調べました。(下記ソースでいうところの:titleや:content)

 

具体的には

①のソースを追加したところエラーになってしまったので(突然:contentというわけわからんパラメータ書いたので当たり前だけど)、:titleがエラーにならない理由はなんなのか調べました。

 

<%= form_for @project do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %><br><br>
 <%= f.text_area :content, :size => "20x10" %>#・・・①
<% if @project.errors.any? %>
<%= @project.errors.messages[:title][0] %>
<% end %>
</p>
<p>

<%= f.submit %>

DBのテーブルのカラム名と直接紐付いているのかなと思ったので、rails dbconsoleコマンドでテーブル定義を確認しました。

 

psgr_db=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+----------
public | projects | table | postgres
public | schema_migrations | table | postgres
public | users | table | postgres
(3 rows)

projectsテーブルのテーブル定義は

 

psgr_db=# \d projects;

id | integer | not null default nextval('projects_id_seq'::regclass)
title | character varying(255) |
created_at | timestamp without time zone |
updated_at | timestamp without time zone |

titleフィールドがありました。contentフィールドを追加すると、①のソースコードを追加した状態でもエラーがでなくなりました。テーブルのフィールドに直接Railsがアクセスしてることが分かりました。