คำถามติดแท็ก ruby-on-rails-3

Ruby on Rails เป็นกรอบการพัฒนาเว็บโอเพนซอร์ซที่เขียนใน Ruby Ruby on Rails เป็นไปตามหลักการของการประชุมเกี่ยวกับการตั้งค่าช่วยให้คุณไม่ต้องคิดค้นสิ่งใหม่เพื่อให้ทำงานได้อย่างมีประสิทธิภาพ ใช้แท็กนี้เฉพาะสำหรับคำถามเฉพาะของ Rails 3 และติดแท็กคำถามเหล่านั้น [ruby-on-rails]

3
การทำความเข้าใจ: ตัวเลือกแหล่งที่มาของ has_one / has_many ผ่านทางราง
โปรดช่วยฉันในการทำความเข้าใจ:sourceตัวเลือกการhas_one/has_many :throughเชื่อมโยง คำอธิบาย Rails API ทำให้ฉันเข้าใจน้อยมาก "ระบุชื่อการเชื่อมโยงแหล่งที่มาที่ใช้โดยhas_many :through => :queriesใช้เฉพาะในกรณีที่ชื่อไม่สามารถอนุมานได้จากการเชื่อมโยงhas_many :subscribers, :through => :subscriptionsจะค้นหาอย่างใดอย่างหนึ่ง:subscribersหรือ:subscriberบนSubscriptionเว้นแต่:sourceจะได้รับ"

3
Ruby on Rails Callback ความแตกต่างระหว่าง: before_save และ: before_create คืออะไร
คุณช่วยอธิบายรายละเอียดเกี่ยวกับการเรียกกลับ:before_saveและ:before_createRuby on Rails ได้อย่างไรและพวกเขาต้องทำอย่างไรกับการตรวจสอบความถูกต้องของ Rails? การตรวจสอบเกิดขึ้นหลังจาก:before_saveหรือ:before_createไม่?

5
วิธีที่ถูกต้องในการแทนที่เมธอด setter ใน Ruby on Rails คืออะไร?
ฉันใช้ Ruby on Rails 3.2.2 และฉันต้องการทราบว่าต่อไปนี้เป็นวิธี "ถูกต้อง" / "ถูกต้อง" / "แน่ใจ" เพื่อแทนที่เมธอด setter สำหรับแอตทริบิวต์ class ของฉัน attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self[:attribute_name] = value end รหัสข้างต้นดูเหมือนว่าจะทำงานตามที่คาดไว้ แต่ผมอยากจะทราบว่าโดยการใช้รหัสดังกล่าวในอนาคตผมจะมีปัญหาหรืออย่างน้อยสิ่งที่เป็นปัญหา "ผมควรคาดหวัง" / "ที่อาจเกิดขึ้น" กับ Ruby on Rails หากนั่นไม่ใช่วิธีที่ถูกต้องในการแทนที่เมธอด setter วิธีที่ถูกต้องคืออะไร หมายเหตุ : ถ้าฉันใช้รหัส attr_accessible :attribute_name def attribute_name=(value) ... # …


4
rails simple_form - ฟิลด์ที่ซ่อน - สร้าง?
คุณจะมีเขตข้อมูลที่ซ่อนอยู่ในรูปแบบง่ายๆได้อย่างไร รหัสต่อไปนี้: = simple_form_for @movie do |f| = f.hidden :title, "some value" = f.button :submit ผลลัพธ์ในข้อผิดพลาดนี้: undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0


7
rake db: schema: load vs. migrations
คำถามง่ายๆที่นี่ - หากการย้ายข้อมูลช้าและยุ่งยากเนื่องจากแอปมีความซับซ้อนมากขึ้นและถ้าเรามีการrake db:schema:loadโทรที่สะอาดกว่าแทนทำไมการย้ายข้อมูลจึงมีอยู่ทั้งหมด หากคำตอบข้างต้นคือการย้ายข้อมูลจะใช้สำหรับการควบคุมเวอร์ชัน (บันทึกการเปลี่ยนแปลงฐานข้อมูลแบบขั้นตอน) จากนั้นเมื่อแอปมีความซับซ้อนมากขึ้นและrake db:schema:loadมีการใช้งานมากขึ้นแทนพวกเขายังคงใช้งานฟังก์ชันหลักต่อไปหรือไม่ ข้อควรระวัง: จากคำตอบสำหรับคำถามนี้: rake db:schema:load จะลบข้อมูลบนเซิร์ฟเวอร์ที่ใช้งานจริงดังนั้นโปรดใช้ความระมัดระวัง

12
วิธีที่ดีที่สุดในการพิมพ์แฮชสวย ๆ
ฉันมีแฮชขนาดใหญ่ที่มีอาร์เรย์ซ้อนกันและแฮช ฉันต้องการพิมพ์ออกมาเพื่อให้ผู้ใช้อ่านได้ ฉันต้องการให้เป็นเช่น to_yaml - อ่านได้สวย - แต่ยังดูเทคเกินไป ในที่สุดมันก็จะเป็นผู้ใช้ที่ต้องอ่านข้อมูลเหล่านี้เพื่อให้พวกเขาจำเป็นต้องจัดรูปแบบได้อย่างหมดจด ข้อเสนอแนะใด ๆ

14
เป็นไปได้ไหมที่จะทำการทดสอบเดี่ยวใน MiniTest?
ฉันสามารถรันการทดสอบทั้งหมดในไฟล์เดียวด้วย: rake test TEST=path/to/test_file.rb อย่างไรก็ตามหากฉันต้องการทดสอบเพียงหนึ่งไฟล์ในไฟล์นั้นฉันจะทำอย่างไร ฉันกำลังมองหาฟังก์ชั่นที่คล้ายกับ: rspec path/to/test_file.rb -l 25

2
ละเว้นเขตเวลาทั้งหมดใน Rails และ PostgreSQL
ฉันกำลังจัดการกับวันที่และเวลาใน Rails และ Postgres และพบกับปัญหานี้: ฐานข้อมูลอยู่ใน UTC ผู้ใช้ตั้งค่าเขตเวลาที่เลือกในแอพ Rails แต่จะใช้เมื่อรับเวลาท้องถิ่นของผู้ใช้เพื่อเปรียบเทียบเวลาเท่านั้น ผู้ใช้เก็บเวลาหนึ่งพูด 17 มีนาคม 2012 เวลา 19.00 น. ฉันไม่ต้องการให้มีการแปลงเขตเวลาหรือเขตเวลาที่จะจัดเก็บ ฉันแค่ต้องการบันทึกวันที่และเวลา ด้วยวิธีนี้หากผู้ใช้เปลี่ยนเขตเวลามันจะยังคงแสดง 17 มีนาคม 2012, 19:00 ฉันใช้เขตเวลาที่ผู้ใช้ระบุเพื่อรับบันทึก 'ก่อนหน้า' หรือ 'หลัง' เวลาปัจจุบันในเขตเวลาท้องถิ่นของผู้ใช้ ขณะนี้ฉันใช้ 'การประทับเวลาที่ไม่มีเขตเวลา' แต่เมื่อฉันดึงข้อมูลระเบียนทางรถไฟ (?) จะแปลงให้เป็นเขตเวลาในแอปที่ฉันไม่ต้องการ Appointment.first.time => Fri, 02 Mar 2012 19:00:00 UTC +00:00 เนื่องจากระเบียนในฐานข้อมูลดูเหมือนว่าจะออกมาในรูปแบบ UTC แฮ็คของฉันคือใช้เวลาปัจจุบันลบเขตเวลาด้วย 'Date.strptime (str, "% m …

7
การเพิ่ม: default => true เพื่อ boolean ในคอลัมน์ Rails ที่มีอยู่
ฉันเห็นคำถามสองสามข้อ (นั่นคือคำถามนี้ ) ที่ SO เกี่ยวกับการเพิ่มค่าบูลีนเริ่มต้นให้กับคอลัมน์ที่มีอยู่ ดังนั้นฉันจึงลองใช้change_columnข้อเสนอแนะ แต่ฉันต้องไม่ทำถูก ฉันเหนื่อย: $ change_column :profiles, :show_attribute, :boolean, :default => true ซึ่งผลตอบแทน -bash: change_column: command not found จากนั้นฉันก็วิ่ง: $ rails g change_column :profiles, :show_attribute, :boolean, :default => true ...และ $ rails change_column :profiles, :show_attribute, :boolean, :default => true จากนั้นก็วิ่งrake db:migrateแต่ค่ายังคงอยู่:show_attribute nilในคำถามที่ฉันอ้างถึงข้างต้นมันบอกว่าใน PostgreSQL คุณต้องอัปเดตด้วยตนเอง เนื่องจากฉันใช้ …

10
วิธีที่ดีที่สุดในการเพิ่ม JavaScript เฉพาะหน้าในแอพ Rails 3?
Rails 3 มี JavaScript ที่ไม่สร้างความรำคาญซึ่งเยี่ยมมาก แต่ฉันสงสัยว่าวิธีที่ดีที่สุดคือการรวม JavaScript เพิ่มเติมสำหรับหน้าใดหน้าหนึ่ง ตัวอย่างเช่นที่ฉันอาจทำก่อนหน้านี้: <%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %> ตอนนี้เราสามารถทำให้มันไม่เป็นการรบกวนกับสิ่งที่ชอบ <%= f.radio_button :rating, 'positive' %> # then in some other file $('user_rating_positive').click(function() { $('some_div').show(); } ดังนั้นฉันเดาคำถามของฉันคือที่ / วิธีการรวม JavaScript ที่? ฉันไม่ต้องการเติมapplication.jsไฟล์เพราะ JavaScript นี้ใช้ได้กับมุมมองนี้เท่านั้น ฉันควรจะรวมไฟล์ JavaScript ที่กำหนดเองสำหรับแต่ละหน้าหรืออย่างใดอย่างหนึ่งหรือติดไว้ในตัวแปรอินสแตนซ์ที่ส่วนหัวมองหา?

4
Rails 3 ประเภทข้อมูล?
ฉันจะหารายการประเภทข้อมูลที่สามารถใช้ได้ในราง 3 (เช่นข้อความสตริงจำนวนเต็มลอยวันที่ ฯลฯ ) ฉันจะเรียนรู้เกี่ยวกับสิ่งใหม่ ๆ แต่ฉันชอบที่จะมีรายการที่ฉันสามารถอ้างอิงได้ง่าย

11
วิธีที่ดีที่สุดในการสร้างโทเค็นที่ไม่เหมือนใครใน Rails?
นี่คือสิ่งที่ฉันใช้ โทเค็นไม่จำเป็นต้องได้ยินเพื่อคาดเดามันเป็นเหมือนตัวระบุ URL แบบสั้นมากกว่าสิ่งอื่นใดและฉันต้องการให้มันสั้น ฉันได้ติดตามตัวอย่างที่ฉันพบทางออนไลน์และในกรณีที่มีการปะทะกันฉันคิดว่ารหัสด้านล่างจะสร้างโทเค็นใหม่ แต่ฉันไม่แน่ใจจริง ๆ ฉันอยากรู้ว่าจะเห็นคำแนะนำที่ดีกว่านี้ได้อย่างไรเนื่องจากมันรู้สึกหยาบเล็กน้อยรอบ ๆ ขอบ def self.create_token random_number = SecureRandom.hex(3) "1X#{random_number}" while Tracker.find_by_token("1X#{random_number}") != nil random_number = SecureRandom.hex(3) "1X#{random_number}" end "1X#{random_number}" end คอลัมน์ฐานข้อมูลของฉันสำหรับโทเค็นเป็นดัชนีที่ไม่ซ้ำกันและฉันยังใช้validates_uniqueness_of :tokenกับโมเดล แต่เพราะสิ่งเหล่านี้ถูกสร้างขึ้นในแบทช์โดยอัตโนมัติตามการกระทำของผู้ใช้ในแอป (พวกเขาสั่งซื้อและซื้อโทเค็นเป็นหลัก) เป็นไปไม่ได้ที่แอพจะมีข้อผิดพลาดเกิดขึ้น ฉันก็สามารถเดาได้ว่าเพื่อลดโอกาสในการชนเพิ่มสตริงใหม่ในตอนท้ายสิ่งที่สร้างขึ้นตามเวลาหรืออะไรทำนองนั้น แต่ฉันไม่ต้องการให้โทเค็นยาวเกินไป

7
Rails 3.1 และ Image Image
ฉันใส่รูปภาพทั้งหมดของฉันสำหรับธีมผู้ดูแลระบบของฉันในโฟลเดอร์ทรัพย์สินภายในโฟลเดอร์ชื่อ admin จากนั้นฉันจะเชื่อมโยงกับมันเหมือนปกติคือ # Ruby image_tag "admin/file.jpg" ..... #CSS .logo{ background:url('/assets/images/admin/logo.png'); FYI เพียงเพื่อการทดสอบฉันไม่ได้ใช้แท็ก asset_path เพียงเพราะฉันยังไม่ได้รวบรวมเนื้อหาของฉัน โอเคดีจนกระทั่งฉันตัดสินใจอัปเดตรูปภาพ ฉันเปลี่ยนสีบางส่วน แต่เมื่อทำการโหลดภาพสไตล์ใหม่จะไม่แสดง หากฉันดูภาพโดยตรงในเบราว์เซอร์มันยังคงแสดงภาพเก่า ไปอีกขั้นหนึ่งฉันทำลายโฟลเดอร์ภาพผู้ดูแลระบบ แต่มันก็ไม่มีอะไรแตกสลายภาพทั้งหมดยังคงแสดงอยู่ และใช่ฉันได้ล้างแคชและได้ลองกับเบราว์เซอร์หลายตัว มีการจัดรูปแบบแคชบางอย่างเกิดขึ้นหรือไม่ นี่เป็นเพียงการพัฒนาท้องถิ่นโดยใช้ธารเพื่อให้บริการหน้าเว็บ แม้แต่การทำลายโฟลเดอร์รูปภาพทั้งหมด แต่รูปภาพก็ยังคงแสดงอยู่ ฉันพลาดอะไรไปรึเปล่า?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.