2013-02-27 196 views
41

में विशेषता मान के मैन्युअल अपडेट पर सत्यापन समस्याएं मुझे एक साधारण समस्या है। मैं रेल कंसोल में अपने User.find(1) के लिए कुछ फ़ील्ड मान बदलना चाहता हूं।रेल कंसोल

मैंने कोशिश की:

u = User.find(1) 
u.update_attributes(roles_mask: 3) 

और false लौटे मिला है। जब मैं u.errors.full_messages जांचता हूं, तो मुझे लगता है कि ऐसा इसलिए है क्योंकि has_secure_password से पासवर्ड सत्यापन में कोई समस्या है। मैं इसे कंसोल में मैन्युअल रूप से कैसे अपडेट कर सकता हूं?

+0

http://apidock.com/rails/ActiveRecord/Persistence/update_attribute –

उत्तर

67

अगर आप सत्यापन बायपास करना चाहते हैं,

# skip validations but run callbacks 
u.update_attribute :roles_mask, 3 

या

# do the update on the sql so no validation and callback is executed 
u.update_column :roles_mask, 3 
+1

पूर्णता के लिए, रेल 4 में आप 'u.update_attributes (roles_mask: 3, पासवर्ड: 'पासवर्ड') का उपयोग कर सकते हैं, लेकिन आपको एक साथ कई पैरा सेट करने के लिए पासवर्ड जानना होगा। – Alf

10

का उपयोग आप उपयोगकर्ता को प्रमाणित करने के पहले तो आप उपयोगकर्ता को अपडेट कर सकते है एक नज़र here

u = User.find(1) 
u.authenticate("password") 
u.update_attributes(roles_mask: 3) 
है

या यदि आप सत्यापन को छोड़ना चाहते हैं तो आप अनुसरण कर सकते हैं;

u = User.find(1) 
u.update_attribute :roles_mask, 3 
5

आप update_attribute(:roles_mask, 3) या update_column(:roles_mask, 3) कोशिश कर सकते हैं।

3

आप की तरह इस

Post.find(1).comments.first.update(body: "hello") 

या

@u = Post.find(1) 
@u.comments.first.update(body: "hello") 

जहां टिप्पणियाँ टिप्पणी तालिका का नाम है, शरीर टिप्पणी तालिका में स्तंभ का नाम है कुछ हो सकता है।

यह आपको आपके द्वारा विशेषता नेस्ट है पर लागू होता है

post.rb

has_many: comments 
accept_nested_attributes_for: comment 

comment.rb

belongs_to: post