2012-03-18 42 views
2

说我有一个现有的Rails 3应用程序的两款车型,我想创建一个协会:修改模型以创建关联,执行此操作的正确方法是什么?

我想创建一个协会,这样我可以做的:

User.account_type 
AccountType.users 

所以一用户只有一个帐户类型,而帐户类型有0个或多个用户。

在db级别,用户将拥有account_type_id,并且AccountType表不会有用户的任何关联列。

  1. 所以我的第一步是写一个测试权吗?因此,在我的user_spec.rb和account_type_spec.rb中,我应该创建一个简单的测试,以查看它是否具有代理类.account_type account_type.users是否存在?还要别的吗?

  2. 修改User.rb模型并添加belongs_to:AccountType,并在AccountType.rb中添加has_many的权利?

  3. 创建迁移脚本,我只是添加account_type_id还是使用特殊的方式来引用AccountType?

+1

IMO测试,看是否存在的方法是单元测试Rails本身。如果您尚未添加关联,那么使用由关联添加的方法的测试将失败。 – 2012-03-18 14:57:44

+0

1-看起来正确2-是的,你是正确的3-是只是添加account_type_id – nateleavitt 2012-03-26 20:03:51

+0

我在这里有点困惑。你想要的东西像:'AccountType.users'或'account_type.users'?因为,你说你建立了一个'AccountType' **对象的关联**,所以'User'模型有很多**用户**,那么你需要''users'表中的'account_type_id'列。如果你想实现类似于'AccountType.users'的操作,你必须编写'AccountType'模型的'用户'方法。你确定你想要的关系吗?检查此链接以更好地理解rails中的关联:http://guides.rubyonrails.org/association_basics.html – Surya 2012-04-02 05:26:42

回答

0

关于测试:我会跟戴夫牛顿的评论,你应该测试你打算与此相关联,以制造出任何行为(这么写试验,以创建关联的能力达成一致,以查找用户或帐户通过这个协会等),但是测试你所描述的方法的存在可能会超出必要的程度。

你的步骤2和步骤3对我来说很合适。

rails g migration add_account_type_id_to_users account_type_id:integer 

应该生成您需要的迁移。

相关问题