يتم تحديث سمة Mail_type الخاصة بي .. لكن لا يمكنني معرفة السبب؟

StackOverflow https://stackoverflow.com/questions/4101402

سؤال

def update
    debugger
    @email_blast = EmailBlast.find(params[:id])
    if @email_blast.update_attributes(params[:email_blast])
      debugger
      # changes mail_type here
      flash[:notice] = 'Email Blast Saved.'
      if params[:id] == "1"
        Delayed::Job.enqueue MassEmail.new(params[:email_blast][:subject], params[:email_blast][:body])
      elsif params[:id] == "2"
        Delayed::Job.enqueue OrgBlast.new(params[:email_blast][:subject], params[:email_blast][:body])
      elsif params[:id] == "3"
        Delayed::Job.enqueue MagicEmail.new(params[:email_blast][:subject], params[:email_blast][:body])
      elsif params[:id] == "4"
        Delayed::Job.enqueue OrgMagicEmail.new(params[:email_blast][:subject], params[:email_blast][:body])
      end
      redirect_to edit_admin_email_blast_path(params[:id])
    end
end

ما مدى غرابة ذلك؟ بمجرد تمرير رمز وحدة التحكم هذا ، يتم تغيير @email_blast.mail_type إلى "card_holder". لماذا سيحدث ذلك؟ المعلمات في أول عودة تصحيح الأخطاء:

(rdb:407) @email_blast = EmailBlast.find(params[:id])
#<EmailBlast id: 3, subject: "HQMagic Email", body: "asdfasdfasdfasdfas<br />\r\nd<br />\r\nfas<br />\r\ndf<br...", mail_type: "magic_email", created_at: "2010-10-28 14:57:48", updated_at: "2010-11-04 20:51:45">

والثانية :

{"body"=>"asdfasdfasdfasdfas<br />\r\nd<br />\r\nfas<br />\r\ndf<br />\r\nasdf<br />\r\nas<br />\r\ndf<br />\r\nasd<br />\r\nfasd<br />\r\nfa<br />\r\nsd<br />\r\nfasd", "mail_type"=>"card_holders", "id"=>"3", "subject"=>"HQMagic Email"}
هل كانت مفيدة؟

المحلول

إذا كنت تتصل update_attributes و params[:email_blast][:mail_type] تم تعريفه ، ثم سيتم إعادة تعيينه. يمكنك دائمًا تعيين هذه المعلمة على أنها محمية لتجنب ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top