यह वास्तव में मुझे नीचे ला रहा है! :(रेल पॉलीमोर्फिक चेकबॉक्स के माध्यम से कई हैं
मैं इसमें एक चेकबॉक्स सूची जहां कई स्टोर या जाँच की जा सकती अनियंत्रित मॉडल स्टाफिंग के माध्यम से स्टोर प्रशासन के लिए के साथ अपने उपयोगकर्ता मॉडल के लिए एक नेस्टेड मॉडल प्रपत्र बनाने के लिए कोशिश कर रहा हूँ।
class Staffing < ActiveRecord::Base
# Associations
belongs_to :user
belongs_to :staffable, :polymorphic => true
belongs_to :store, :class_name => "Store",
:foreign_key => "staffable_id"
end
class User < ActiveRecord::Base
# Includes
acts_as_authentic
# Associations
has_many :staffings, :dependent => :destroy
has_many :stores, :through => :staffings
# Nested Attributes
accepts_nested_attributes_for :staffings, :allow_destroy => true
end
class Store < ActiveRecord::Base
# Associations
has_many :staffings, :as => :staffable, :dependent => :destroy
has_many :users, :through => :staffings
end
# Users Controller
def create
@user = User.new(params[:user])
flash.now[:notice] = "#{@user.name} was successfully created." if @user.save
respond_with @user
end
def update
@user = User.find(params[:id])
params[:user][:store_ids] ||= []
@user.update_attributes(params[:user])
flash.now[:notice] = "#{@user.name} was successfully updated."
respond_with @user
end
के लिए हाथ में प्रयोजनों के अन्य staffable संघ पर ध्यान नहीं दिया जा सकता है। यह एक ऐसी ही मॉडल है कि मैं अंत में स्टोर लेकिन पहली बात के साथ-साथ प्रशासन के लिए पहले के बाद से मैं बहुत स्टम्प्ड रहा हूँ के रूप में यह है चाहेंगे है।
# User Form
- for store in Store.all
%p
= check_box_tag "user[store_ids][]", store.id, @user.stores.include?(store)
= store.nickname
मेरी पैरामीटर भेजता है इस प्रकार के साथ:
{"utf8"=>"✓",
"authenticity_token"=>"blub-blub-blub=",
"user"=>{"login"=>"hey.buddy",
"email"=>"[email protected]",
"role"=>"admin",
"hq"=>"1",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"store_ids"=>["3",
"4"]}}
और फिर त्रुटि!
Mysql2::Error: Column 'staffable_type' cannot be null: INSERT INTO `staffings` (`created_at`, `staffable_id`, `staffable_type`, `updated_at`, `user_id`) VALUES ('2010-11-17 00:30:24', 3, NULL, '2010-11-17 00:30:24', 102)
मैं जानता हूँ कि मैं 'स्टोर' के रूप में staffable_type बाहर का निर्माण करने के लिए है, लेकिन मैं पूरे दिन की कोशिश कर रहा है - चाल क्या है?
मेरे पास staffable_type (और id) कॉलम सेट हैं: null => false लेकिन यह इसका कारण नहीं हो सकता क्योंकि इसे डीबी को मारने से पहले नियंत्रक में सीधे बाहर करने की आवश्यकता है।
क्यों नीचे मेरी बनाने कार्रवाई में काम नहीं करता है:
@user.staffings.each do |s|
s.staffable_type = 'Store'
end
या:
@user.store_ids.each do |i|
s = @user.staffings.build
s.staffable_type = 'Store'
s.staffable_id = i
end
तो कई कोई लाभ नहीं हुआ ऊपर करने के लिए इसी तरह की बातों की कोशिश कर रहा। किसी भी मदद की सराहना की जाएगी।
आपके समय के लिए धन्यवाद!