Ruby on rails 修改模型以创建关联,正确的方法是什么?

Ruby on rails 修改模型以创建关联,正确的方法是什么?,ruby-on-rails,rspec,Ruby On Rails,Rspec,假设我有两个现有Rails 3应用程序模型,我想为其创建关联: User AccountType 我想创建一个关联,这样我可以: User.account_type AccountType.users 因此,一个用户只有一个帐户类型,而一个帐户类型有0个或多个用户 在db级别,用户将拥有account_type_id,AccountType表将不具有任何与用户关联的列 所以我的第一步是写一个测试,对吗?所以在我的user_spec.rb和account_type_spec.rb中,我应该创建

假设我有两个现有Rails 3应用程序模型,我想为其创建关联:

User
AccountType
我想创建一个关联,这样我可以:

User.account_type
AccountType.users
因此,一个用户只有一个帐户类型,而一个帐户类型有0个或多个用户

在db级别,用户将拥有account_type_id,AccountType表将不具有任何与用户关联的列

  • 所以我的第一步是写一个测试,对吗?所以在我的user_spec.rb和account_type_spec.rb中,我应该创建一个简单的测试,看看它是否有代理类?还有别的吗

  • 修改User.rb模型并将其添加到:AccountType,并且在AccountType.rb中添加一个有多个权限

  • 创建迁移脚本,我是只添加account\u type\u id还是使用特殊方式引用AccountType


  • 关于测试:我同意Dave Newton的意见,即您应该测试您打算使用此关联创建的任何行为(因此,编写创建关联的能力测试,通过此关联查找用户或帐户等)但是,正如你所描述的,对方法存在性的测试可能超出了必要的范围

    你的第2步和第3步我看对了

    rails g migration add_account_type_id_to_users account_type_id:integer
    

    应该生成所需的迁移

    关于测试:我同意Dave Newton的意见,即您应该测试您打算创建的与此关联的任何行为(因此,编写创建关联的能力测试,通过此关联查找用户或帐户等)但是,正如你所描述的,对方法存在性的测试可能超出了必要的范围

    你的第2步和第3步我看对了

    rails g migration add_account_type_id_to_users account_type_id:integer
    

    应该生成所需的迁移

    IMO的测试就是对Rails本身进行单元测试,看看这些方法是否存在。如果您没有添加关联,那么使用关联添加的方法的测试将失败。1-看起来不错2-是的,您是正确的3-是的,只需添加帐户类型即可。我在这里有点困惑。您需要类似以下内容:
    AccountType.users
    account\u-type.users
    ?既然您说您正在为一个
    AccountType
    对象建立关联,以使其拥有
    User
    模型的多个用户,那么您需要
    users
    表中的
    account\u type\u id
    列。如果你想实现像:
    AccountType.users
    这样的功能,你必须编写一个
    users
    AccountType
    方法。你确定你想从人际关系中得到什么吗?查看此链接以更好地了解rails中的关联:IMO测试以查看这些方法是否存在于rails本身的单元测试中。如果您没有添加关联,那么使用关联添加的方法的测试将失败。1-看起来不错2-是的,您是正确的3-是的,只需添加帐户类型即可。我在这里有点困惑。您需要类似以下内容:
    AccountType.users
    account\u-type.users
    ?既然您说您正在为一个
    AccountType
    对象建立关联,以使其拥有
    User
    模型的多个用户,那么您需要
    users
    表中的
    account\u type\u id
    列。如果你想实现像:
    AccountType.users
    这样的功能,你必须编写一个
    users
    AccountType
    方法。你确定你想从人际关系中得到什么吗?查看此链接以更好地了解rails中的关联: