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;

我为此创建一个模型没有意义,对吧?

第一个问题:如何生成迁移以单独创建表而无需任何模型?

第二个问题:当这个表被数据填充时,我如何与之关联。例如,将它与User模型(如果可能)/用户对象相关联,以便我可以通过令牌(提供is_used = 0)找到用户并返回用户的数据?

如果这是一个新手问题,我提前道歉,我可以用 PHP 轻松完成所有这些工作,但我不知道如何在 Rails 上做到这一点。

4

4 回答 4

3

您需要此表的模型。user_verification_token有一个表格模型对您来说确实很有意义。为了从这些数据中获取关联和您想要的所有其他功能,您需要创建一个模型及其关联。

回答第一个问题:运行rails 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],或者如果你有更多的cols要存储,你可以创建一个模型,然后像在php中一样创建默认行.sql 文件,但当然是 ruby​​ :) 例如:

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 回答
0

创建模型,因为所有验证都可以在模型中完成。例如:validates :user_id。所以在创建表时不需要包含这些约束

于 2017-06-30T04:25:36.517 回答