gpt4 book ai didi

ruby-on-rails - 创建rails连接表后如何链接表单

转载 作者:行者123 更新时间:2023-12-04 05:40:32 25 4
gpt4 key购买 nike

嗨,我的 Rails 3.1 应用程序中有一个产品模型,如下所示:

+----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| type | text | YES | | NULL | |
| title | text | YES | | NULL | |
| description | text | YES | | NULL | |
| price | text | YES | | NULL | |
| img_src | text | YES | | NULL | |
| source | text | YES | | NULL | |
| sr_id | text | YES | | NULL | |
| categories | text | YES | | NULL | |
+----------------+---------------+------+-----+---------+----------------+

我使用以下迁移(未创建模型)创建了 Categories_Products:
class CreateCategoriesProducts < ActiveRecord::Migration
def change
create_table :categories_products, :id => false do |t|
t.references :product
t.text :categories
t.timestamps
end
end
end

1) 如何设置我的产品表单,以便在填写 Categories text_field 时,它将更新我刚刚创建的连接表。我从产品表中删除了类别列。

2)我这样做的全部原因是因为我最初在一个字段中有多个类别 ID,并且需要将它们分解以便我可以轻松地执行不同的计数等。用户需要能够为每个产品添加多个类别,我如何告诉 Rails 将添加到数据库中的新行的每个类别保存?

最佳答案

一个Product可以有多个Category,一个Category可以引用多个Product,对吧?如果是这样,你想创建第三个关联表,我们称之为product_categories ,并使用标准的 Rails 习惯用法来支持它:

# file: app/models/product.rb
class Product < ActiveRecord::Base
has_many :categories, :through => :product_categories
has_many :product_categories, :dependent => :destroy
end

# file: app/models/category.rb
class Category < ActiveRecord::Base
has_many :products, :through => :product_categories
has_many :product_categories, :dependent => :destroy
end

# file: app/models/product_category.rb
class ProductCategory < ActiveRecord::Base
belongs_to :product
belongs_to :category
end

...和你的表/迁移:
# file: db/migrate/xxx_create_products.rb
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
...
t.timestamps
end
end
end

# file: db/migrate/xxx_create_categories.rb
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name
t.timestamps
end
end
end

# file: db/migrate/xxx_create_product_categories.rb
class CreateProductCategories < ActiveRecord::Migration
def change
create_table :product_categories do |t|
t.references :product
t.references :category
t.timestamps
end
end
end

这样,“为每个产品添加多个类别”变得容易:
my_product.categories.create(:name => "toy")

这将创建一个名为“toy”的类别以及将 my_product 和该新类别相关联的 ProductCategory。如果你想要完整的描述, this Guide是一个开始的地方。

关于ruby-on-rails - 创建rails连接表后如何链接表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com