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がアクセスしてることが分かりました。