1

我正在创建一个非常基本的电子商务应用程序来自学 Rails,我遇到了第一个障碍:

我创建了一些关联,以便商家可以为他们发布的产品分配类别,并且按照我的方式工作得很好,但是,现在的工作方式是,当商家创建新产品时,类别表中的所有类别都是可供选择。假设,如果我想将该列表限制为仅包含该特定商家创建或关联的类别,我假设从categories_merchants表中获取,我将如何去做?

我在下面展示了相关表格和表格,以显示我所做的但遗漏了模型,但是我在其中包含所有适当的关联:

产品表:

create_table :products do |t|
  t.integer :merchant_id
  t.string :title
  t.text :body
  t.date :publish_date
  t.date :expiry_date
  t.timestamps

类别表:

create_table :categories do |t|
  t.string :name
  t.timestamps

分类_产品表:

create_table :categories_products, :id =>false do |t|
  t.integer :category_id
  t.integer :product_id
end
add_index :categories_products, [:category_id, :product_id]

分类_商家表:

create_table :categories_merchants, :id =>false do |t|
  t.integer :category_id
  t.integer :merchant_id
end
add_index :categories_merchants, [:category_id, :merchant_id]

新产品形式:

<%= simple_form_for(@product) do |f| %>
  <div class="form-inputs">
    <%= f.input :title %>
    <%= f.input :body %>
    <%= f.association :categories, :as => :collection_select %>
    <%= f.input :publish_date %>
  </div>
<% end %>

提前致谢 ;)

4

1 回答 1

0

你可以这样做:

<%= f.association :categories, 
                  :as => :collection_select, 
                  :collection => Category.includes(:categories_merchants).where("categories_merchants.merchant_id = ?", merchant_id) %>
于 2013-08-20T19:25:05.870 回答