「正しい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
▽関数追加後の表示結果






