2011-11-12 6 views
0

私のアプリケーションでは、特定のタイプのレコード(チェックレジスタのようなもの)を自動的に数値(1001から始まる)に割り当てる必要があります。数字は入力画面の一部として表示する必要がありますが、変更はできません。私自身の自動増分フィールドを割り当てる方法は?

これをRailsでどうやって行うのですか?

注:これはidフィールドとは関係ありません。

答えて

2

私が知っている通り、auto_incrementカラムを1つだけテーブルに設定することができ、それはprimary keyとしても定義する必要があります。 idフィールドがテーブルのprimary keyであるため、これはオプションではありません。

このアプリケーションを内部で実行する必要があります。ただ、テーブルにinteger列を追加します。

add_column :table_name, :column_name, :integer 

は、次に作成された最後のデータセット内の列の値を割り出し、あなたのモデルにメソッドを追加します。

def self.last_<column_name>_used 
    return last.<column_name> unless last.nil? 
    return 1000 
end 

def self.next_<column_name>_to_use 
    last_<column_name>_used+1 
end 

次に、あなたが自動にincremendedすべきModel.next__to_useの値を代入するfilterを使用することができます。また、フォームに表示されなければならない値を得るためにそれを使用することができます。フォームはjQueryを使用して簡単に無効にすることができます。

$('#model_<column_name>').attr("disabled", true); 

希望はこれです。

関連する問題