Ruby on Rails - 模型和关系表

cou*_*rak 7 ruby ruby-on-rails ruby-on-rails-3

我是一个noob,开始使用ruby on rails并试图了解模型.非常熟悉数据库,想要了解何时为关系生成模型?

例如 - 我有用户表和小工具表.每个用户都可以拥有多个小工具.我想将此关系存储在与user_id和gadget_id的关系表中.我使用rails生成模型User和rails生成模型Gadget cmd创建了两个表.

问题 - 我现在要创建另一个名为users_gadgets的模型吗?命名约定是否正确?我已经看到很多关于如何创建关联的文档(has_many,belongs_to)但是我不知道何时需要创建模型?

每次我想在数据库中存储关系然后运行迁移时,是否必须创建模型?

mor*_*itz 5

关系模型只对您描述的N对N关系有意义.当您选择使用has_and_belongs_to_many时,您不需要创建连接模型,但仍需要通过迁移创建连接表.然后命名约定是gadgets_users,因为'g'在字母表中的'u'之前.

如果选择has_many:through,则可以通过GadgetUser连接模型在连接表中存储其他信息.例如,如果您想在给定时间内记录小工具属于用户,那么此时间信息在逻辑上属于小工具和用户之间的"连接",因此您应将其保留在连接表中.


hou*_*se9 4

你可以通过以下两种方式之一进行

1) has_and_belongs_to_many 在这种情况下,你只需要一个表(无模型)gadgets_users 和 user_id gadget_id,rails 喜欢表名按字母顺序为复数

2) has_many :through,这不是“正常”有很多,在这种情况下,您需要一个模型(可以随意命名)我更喜欢这个模型而不是另一个,因为它允许您向关系添加附加属性如果需要的话

请参阅指南,它比我能更好地解释http://guides.rubyonrails.org/association_basics.html#choosing- Between-has_many-through-and-has_and_belongs_to_many

还有 -railscasts - http://railscasts.com/episodes/47-two-many-to-many

每次我想要将关系存储在数据库中然后运行迁移时,是否都必须创建模型?是的,大多数时候