1

データベースからリストを取得する方法について質問があります。私は開発にsqliteを使用し、生産にpostgresを使用しています(開発にもpgを使用する必要があることを知っています-リストに載っています):) simple_formも使用しています。

私のアプリはここで見ることができます: majorfinder.comで、メジャー セクションに取り組んでいます。主要な番組ページごとに、表示したいリストがいくつかあります。

データベースから順序付けられていないリストに出力する必要があるという情報があります。順序付けられていないリストは、その専攻の典型的な専攻コースであり、次のようになります (たとえば、見ている専攻が言語学の場合):

<ul>
  <li>Phonetics and Phonology</li>
  <li>Syntax</li>
  <li>Semantics and Pragmatics</li>
  <li>Language in Society</li>
</ul>

各専攻のクラスは専攻ごとに異なるため、データベースに配置する必要がある情報になります。この情報をデータベースに保存してから、ビューに取得する方法をお勧めしますか? リスト アイテムの数は変動する可能性がありますが、それほど多くはありません。リスト アイテムが 2 つある場合もあれば、5 つある場合もあります。


更新: 各クラスが特定の専攻に関連する表にクラスを配置します。関係は次のようになります。

Major.rb

has_many :major_classes

MajorClass.rb

所属先:メジャー

major_class スキーマは次のようになります。

create_table "major_classes", :force => true do |t|
  t.datetime "created_at"
  t.datetime "updated_at"
  t.integer  "major_id"
  t.text     "class_name", :unique => true, :null => false
end

私のコントローラーでは、これを行います:

@major_class = MajorClass.includes(:major)

私はレールに慣れていないので、どうすればこれを自分の見解に取り入れることができるかわかりません..助けてもらえますか?

これはあなたがそれを行う方法ですか?それとも、これに何か変更を加えますか?ありがとう!!

4

2 に答える 2

1

リスト モデル

 list_id | list_name                  | child_of
    ------------------------------------------------
    1       | Linguistics                | 0
    2       | Phonetics and Phonology    | 1
    3       | Syntax                     | 1
    4       | Semantics and Pragmatics   | 1
    5       | Language in Society        | 1
    6       | Arts                       | 0
    7       | Music                      | 6
    8       | Dance                      | 6
    9       | Drama                      | 6

コントローラ

@list = Lists.where(:child_of => Lists.find_by_list_name("Linguistics").list_id)

見る

<ul>

@list.each do |i|

  <li><%= i.list_name %></li>

end

</ul>

Rails の移行方法は洗練されていますが、古い学校の mysql create table ステートメントに勝るものはありません。create table を使用していない場合は、データベースを扱っていません。

migration_file.rb

class CreateLists < ActiveRecord::Migration
  def up
        execute "DROP TABLE IF EXISTS lists"
        execute <<-SQL
        CREATE TABLE IF NOT EXISTS lists (
                list_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
                list_name VARCHAR(255) NOT NULL,
                child_of INT(11) NOT NULL
                created_at DATETIME NOT NULL,
                updated_at DATETIME DEFAULT NULL,
                PRIMARY KEY (list_id),
                UNIQUE(list_name)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        SQL
  end
  def down
        execute "DROP TABLE lists"
  end
end
于 2013-03-12T07:46:40.177 に答える
-1

静的データはリソース クラスとして作成できます。

rails g model Degree name

ファイルに取り込むことができdb/seed.rbます。

移行を実行してseed.rbファイルが更新されたら、次を使用してレコードをテーブルに追加できます。

rake db:seed

値を使用するコントローラー アクションで、次のように追加します。

@degrees = Degree.all

すべての@degreesレコードが含まれます。

于 2013-03-10T07:15:25.117 に答える