「正しいMVCではModelが太る」と言われている。
俺が勝手に考える正しいMVCの実装。モデルはデータAPI!
http://kyoro353.hatenablog.com/entry/20111223/1324589389
Railsでは具体的にどうすれば良いだろうか?
apps/modelsフォルダ内の ActiveRecord を継承したクラスをカスタマイズすることだろうか。
初めの一歩として、テーブルに存在しないカラムを ActiveRecord に追加してみる。
▽現状のMigrationクラス
class CreateOnecolumnmodels < ActiveRecord::Migration def change create_table :onecolumnmodels do |t| t.string :name t.timestamps end end end▽現状のActiveRecordクラス
class Onecolumnmodel < ActiveRecord::Base end▽現状の表示結果
試しに、ActiveRecord クラスに attribute を追加してみるが、うまくいかない。
▽attributeを追加したActiveRecordクラス
class Onecolumnmodel < ActiveRecord::Base def initialize @secondname = "2nd name" end attr_accessor :secondname end▽追加したattributeを表示するshow.html.erb
<p id="notice"><%= notice %></p> <p> <b>Name:</b> <%= @onecolumnmodel.name %> </p> <p> <b>Second Name:</b> <%= @onecolumnmodel.secondname %> </p> <%= link_to 'Edit', edit_onecolumnmodel_path(@onecolumnmodel) %> | <%= link_to 'Back', onecolumnmodels_path %>どうも ActiveRecord ではアクセサが機能しないようだ。
下記のように関数として実装したらうまくいった。
class Onecolumnmodel < ActiveRecord::Base def secondname return "2nd name" end end▽関数追加後の表示結果