web-dev-qa-db-ja.com

Railsテーブルなしのモデル

色を言うための選択リストを作成したいのですが、色のテーブルを作成したくないです。どこでも見ましたが、グーグルで見つけることができません。

私の質問は次のとおりです。データベーステーブルなしでモデルに色を配置するにはどうすればよいですか。

または、より良いRailsそれを行う方法はありますか?

誰かがモデルに配列またはハッシュを直接入れているのを見ましたが、今では見つけることができませんでした。

31
user993460
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

ロジックを説明します。

56
Louis XIV

答えは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
15
vedant

最も簡単な答えは、単にActiveRecord :: Baseのサブクラスを作成しないことです。次に、オブジェクトコードを記述するだけです。

9
Scott S

(進化しない)選択リストが必要な場合は、ApplicationHelperでリストを返すメソッドを定義できます。次に例を示します。

 def my_color_list
   [
     "red",
     "green",
     "blue"
   ]
 end
0
hkairi