noob问题:)
我正在尝试使用gems devise和shoppe在rails 4中设置产品目录。专柜产品和类别管理。在这里查看http://tryshoppe.com/
用户应该能够创建产品目录。 一个用户有许多目录,一个目录有一个用户。 一个目录有很多产品,产品上有很多目录
这是我在Shoppe Engine命名空间之外的模型。
template <typename K, typename T>
void MyBinaryTree<K, T>::addValue(K key, T value) {
Node *node = new Node(key, value);
addToSubtree(root, node);
}
template <typename K, typename T>
void MyBinaryTree<K, T>::addToSubtree(MyBinaryTree<K, T>::Node *node,
MyBinaryTree<K, T>::Node *toAdd) {
if(node == nullptr) {
node = toAdd;
} else {
if(toAdd->key > node->key) addToSubtree(node->right, toAdd);
else if(toAdd->key < node->key) addToSubtree(node->left, toAdd);
}
}
在Shoppe名称空间内,只显示相关部分。
class User < ActiveRecord::Base
has_many :catalogs
has_many :products, through: :catalogs
attr_accessor :products
end
我正在尝试通过目录设置用户和产品之间的许多关联。但我不确定这是否是我需要的结果的正确方法。
也许我需要在目录和产品之间创建另一个连接表?
提前致谢。
答案 0 :(得分:0)
我认为你不需要另一张联名表;只有多对多关系需要连接表。在一对多(产品到目录)关系中,ActiveRecord只在一个表(product_id
表中的CATALOG
)中记录id。通常在多对多(用户到目录)关系中,您需要一个连接表,但在您的情况下,CATALOG
表实际上用作连接表,因为它具有product_id
和user_id
。
在其他情况下,如果您不想创建Catalog
课程,则可以致电has_and_belongs_to_many
,然后产品和用户可以互相列出。但是,在这种情况下,您执行需要一个连接表。
查看official guide以获得更好的理解(以及良好的关系图)。
似乎OP希望用户和目录之间存在一对多的关系,以及目录和产品之间的多对多关系。然后,需要在目录和产品之间建立连接表。
强烈建议您使用generator
创建迁移bin/rails g migration CreateJoinTableCatalogProduct catalog product
因为它使用create_join_table
创建了迁移,而不是提供信息量较少的create_table
。