色を言うための選択リストを作成したいのですが、色のテーブルを作成したくないです。どこでも見ましたが、グーグルで見つけることができません。
私の質問は次のとおりです。データベーステーブルなしでモデルに色を配置するにはどうすればよいですか。
または、より良いRailsそれを行う方法はありますか?
誰かがモデルに配列またはハッシュを直接入れているのを見ましたが、今では見つけることができませんでした。
class Model
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :whatever
validates :whatever, :presence => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
attr_accessorは属性を作成し、initialize()でオブジェクトを作成し、属性を設定します。
永続化されたメソッドは、データベースとのリンクがないことを通知します。次のような例を見つけることができます。 http://railscasts.com/episodes/219-active-model?language=en&view=asciicast
ロジックを説明します。
答えは2013年には問題ありませんが、Rails 4はActiveRecord
からActiveModel
にデータベースに依存しないすべての機能を抽出しました。また、素晴らしい 公式ガイド そのため。
必要な数のモジュールを含めることも、少しだけ含めることもできます。
例として、必要なのはinclude ActiveModel::Model
そして、あなたはそのようなinitialize
メソッドを忘れることができます:
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
使用するだけ:
attr_accessor :name, :age
最も簡単な答えは、単にActiveRecord :: Baseのサブクラスを作成しないことです。次に、オブジェクトコードを記述するだけです。
(進化しない)選択リストが必要な場合は、ApplicationHelper
でリストを返すメソッドを定義できます。次に例を示します。
def my_color_list
[
"red",
"green",
"blue"
]
end