4

プロジェクトを Rails で書き直そうとしています。現在は PHP (CodeIgniter) で書かれていますが、新しいコードを書くよりも多くのライブラリとコア拡張機能を書くところまで来ました。私はいくつかの Rails チュートリアルを見てきましたが、これまで見てきた内容が気に入っています (渡されたものをあまり制御できていないとは思いますが)。ただし、モデルのないデータベース テーブルに関する情報はほとんどないようです (適切な場所を調べていない可能性があります)。

たとえば、次のテーブルが必要ですuser_verification_token

CREATE TABLE IF NOT EXISTS `user_verification_token` (
  `user_id` int(11) NOT NULL,
  `token` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `is_used` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

私がモデルを作る意味がありませんよね?

最初の質問: モデルなしでテーブルのみを作成するための移行を生成するにはどうすればよいですか?

2 番目の質問: このテーブルがデータで満たされている場合、どのように関連付けますか。たとえば、Userモデル (可能な場合)/ユーザー オブジェクトに関連付けて、トークン (提供is_used = 0) でユーザーを検索し、ユーザーのデータを返すことができるようにしますか?

これが初心者の質問である場合は、事前にお詫び申し上げます。これらすべてを PHP で快適に行うことができますが、Rails でこれを行う方法がわかりません。

4

4 に答える 4

3

このテーブルのモデルが必要です。テーブルのモデルを持つことは理にかなっていuser_verification_tokenます。このデータから必要な関連付けとその他すべての機能を取得するには、モデルとその関連付けを作成する必要があります。

最初の質問に答えるには: runrails generate migration your_migration_name

activity_type元の質問のコメントで言及したテーブルについては、RailsLookup gem に興味があるかもしれません。Rails でルックアップ テーブルを有効に活用するために必要な作業の一部を自動化するのに役立ちます。それを説明するブログ投稿があり、ソースはGitHubで見つけることができます

于 2013-03-12T22:06:34.687 に答える
2

現在のシナリオではモデルが必要ですが、スポーツ (サッカー、テニス、クリケット、水泳、バスケットボールなど) などのカテゴリのデータを保存する必要がある場合は、config->initializers->constant などに定数として保存できます。SPORT_CATEGORIES = [["Football","football"],["Tennis","tennis"],etc] または、保存する列がさらにある場合は、モデルを作成してから、php で行うようにデフォルトの行を作成できます.sql ファイルですが、もちろんルビーです:)例:

sport_categories = [
    {:category => "football", :category_type => "manly" },
    {:category => "Tennis", :category_type => "manly" },
    etc
]

sport_categories.each do |attributes|
    Model_name_here.find_or_initialize_by_category(attributes[:category]).tap do |p|
        p.category_type = attributes[:category_type]
        p.save!
    end
end

次に rake db:seed を実行します。

于 2013-06-19T08:29:37.493 に答える
1

ユーザーに関連付けられるモデルをuser_verification_token介してテーブルに完全にアクセスできるため、このためのモデルを作成することをお勧めします。UserVerificationToken

于 2013-03-12T18:59:59.737 に答える