的枚舉場的變化值我有四個型號:Shop
,Item
,Category
,SubCategory
Rails_admin,根據協會
Shops
與Category
和SubCategory
has_and_belongs_to_many
關聯。
Shops
有has_many
與Items
的關聯。
Category
有has_many
與SubCategories
的關聯。
Both Category
and SubCategory
has_many Items
。
當我創建Shop
我可以選擇很多Categories和SubCategories。
當我嘗試創建Item
時,rails_admin
爲Categories和SubCategories創建了選擇框。但是,有問題。 它使我可以從所有類別和子類別中進行選擇。
我想只能選擇屬於我選擇的商店的類別和子類別。
是否有可能在rails_admin中根據其他模型關聯更改選擇枚舉值?
代碼Category
class Category
include Mongoid::Document
has_many :sub_categories, inverse_of: :category
has_many :items
accepts_nested_attributes_for :sub_categories
end
代碼SubCategory
class SubCategory
include Mongoid::Document
has_many :items
belongs_to :category, inverse_of: :sub_categories
end
代碼Shop
class Shop
include Mongoid::Document
has_many :items, dependent: :destroy, inverse_of: :shop
has_and_belongs_to_many :categories, inverse_of: nil
has_and_belongs_to_many :sub_categories, inverse_of: nil
accepts_nested_attributes_for :items
end
代碼Item
class Item
include Mongoid::Document
belongs_to :shop, inverse_of: :items
belongs_to :category
belongs_to :sub_category
end
============================可能的解決方案============== =========
因爲有一個片面Shop
和Category
之間has_and_belongs_to_many
ASSOCATION,這意味着Categories
的id的Shop
存儲陣列。
我的模型也是Mongoid Documents,這意味着我不能使用連接。
在我Item edit
動作我加入這個代碼:
field :category do
associated_collection_cache_all false
associated_collection_scope do
item = bindings[:object]
shop = item.shop
Proc.new { |scope|
scope = scope.where(id: {"$in" => shop.category_ids.map(&:to_s)}) if item.present?
}
end
end
現在讓我選擇的商店分類類別。但是,有一個問題,我不能使用這個create
動作
您可以將代碼中的'Item','Shop'和'Category'關聯添加到您的問題中嗎?商品是否有與商店類別分開的類別? – thebenedict
編輯我的答案,但(對此抱歉),我的加入語法可能不正確,我不能輕易測試它。更正歡迎,希望這給你的想法。 – thebenedict
我已編輯我的問題與可能的解決方案。 –