« 山尾悠子作品集成 | トップページ | ローズウォーターさん、あなたに神のお恵みを »

モデルとフィールド

 items テーブルに :all, :integer というカラムがあるとする。

 フォーム上で a b c d の4つのフィールドから数値を入力し、これらを、a*1000+b*100+c*10+d といった感じで合成したデータを params[:item][:all] として保存したいと考えている。

 当然モデルには a b c d は定義されてないので、ここにメソッドとして定義して処理するのだろうなと思うのだが、どう書けばよいのか? ひとまず「かんたん RoR 」の例を参考にして、

[ model/item.rb ]
def a
end

def a=(a)
 xxx(a)
end

def b
end

def b=(b)
 xxx(b)
end

def xxx(a)
 ...
end

 のような感じでやってみたものの、まったく機能していない様子。コントローラで処理してもいいのだろうか、とも思ってそちらで

params[:item][:all] = param[:item][:a] * 1000 + ...

 といった感じにしてみても同じくうまくいっていない様子。

 合成しようとなどせずに、個々にカラムを作ってしまえば一番よいのかもしれないのだが(やたらとカラム数が多くなるという弊害はありそうだけれど)、後の処理を考えると合成したデータで保存できていた方が便利ではと思っているので、なんとか実現させたいのだけれど、もはや頭グルグル状態。Ruby のメソッドのあたりのマニュアルとか、あれこれ読んでみるものの、なかなか理解がすすまない。

追記:04/05
 楽にできるものをなにも苦労することもあるまいと、あっさりカラムを増やしてしまうことに変更。いやまあ、やってみればそれはそれで学習にもなるしまったく無益でもないだろうけれど、編集ページでも再変換しなきゃいけないとか、本当にそれが必要なのかと考えると、もっと時間はほかに使ったほうがよかろうという考えもまた真であったりするなと。どのみち根幹処理をどうするのかはまだ決まってないわけだし。

|
|

« 山尾悠子作品集成 | トップページ | ローズウォーターさん、あなたに神のお恵みを »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28835/14547327

この記事へのトラックバック一覧です: モデルとフィールド:

« 山尾悠子作品集成 | トップページ | ローズウォーターさん、あなたに神のお恵みを »