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

Ruby on Rails เป็นโอเพ่นซอร์สเฟรมเวิร์กแบบเต็มเว็บแอ็พพลิเคชันที่เขียนใน Ruby มันเป็นไปตามรูปแบบกรอบ MVC ที่เป็นที่นิยมและเป็นที่รู้จักกันดีในเรื่องแนวทาง

4
Rails: การใช้บิลด์กับการเชื่อมโยง has_one ในราง
ในตัวอย่างนี้ฉันสร้าง a userโดยไม่มีprofileจากนั้นสร้าง a profileสำหรับผู้ใช้นั้นในภายหลัง ฉันลองใช้บิลด์กับhas_oneสมาคม แต่มันระเบิด has_manyวิธีเดียวที่ผมเห็นการทำงานนี้คือการใช้ ควรจะมีเพียงหนึ่งมากที่สุดuserprofile ฉันได้ลองสิ่งนี้แล้ว ฉันมี: class User < ActiveRecord::Base has_one :profile end class Profile < ActiveRecord::Base belongs_to :user end แต่เมื่อฉัน: user.build_profile ฉันได้รับข้อผิดพลาด: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'profiles.user_id' in 'where clause': SELECT * FROM `profiles` WHERE (`profiles`.user_id = 4) LIMIT 1 มีวิธีในทางรถไฟที่จะมีการเชื่อมโยง 0 หรือ 1 …

6
ทดสอบการอัพโหลดไฟล์โดยใช้ rspec - rails
ฉันต้องการทดสอบการอัปโหลดไฟล์ในราง แต่ไม่แน่ใจว่าจะทำอย่างไร นี่คือรหัสควบคุม: def uploadLicense #Create the license object @license = License.create(params[:license]) #Get Session ID sessid = session[:session_id] puts "\n\nSession_id:\n#{sessid}\n" #Generate a random string chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a newpass = "" 1.upto(5) { |i| newpass << chars[rand(chars.size-1)] } #Get the original file name upload=params[:upload] name = upload['datafile'].original_filename …

5
คุณจะค้นพบคุณสมบัติของรุ่นใน Rails ได้อย่างไร?
ฉันพบว่ามันยากที่จะเห็นว่าคุณสมบัติ / คุณสมบัติใดที่มีอยู่ในคลาสโมเดลของฉันทั้งหมดเนื่องจากไม่ได้กำหนดไว้อย่างชัดเจนในไฟล์คลาสของฉัน ในการค้นพบคุณลักษณะของโมเดลฉันเปิดไฟล์ schema.rb และพลิกระหว่างมันกับโค้ดที่ฉันเขียนเท่าที่จำเป็น ใช้งานได้ แต่เป็น clunky เพราะฉันต้องสลับระหว่างการอ่านไฟล์ schema เพื่อรับแอตทริบิวต์ไฟล์ class model เพื่อตรวจสอบวิธีการและรหัสใหม่ที่ฉันกำลังเขียนเพื่อเรียก attribute & methods คำถามของฉันคือคุณจะค้นพบคุณลักษณะของแบบจำลองได้อย่างไรเมื่อคุณวิเคราะห์ codebase ของ Rails เป็นครั้งแรก คุณเปิดไฟล์ schema.rb ไว้ตลอดเวลาหรือมีวิธีที่ดีกว่าที่ไม่เกี่ยวข้องกับการข้ามระหว่างไฟล์ schema และไฟล์ model อย่างต่อเนื่องหรือไม่

9
Rails: ใช้มากกว่า / น้อยกว่าด้วยคำสั่ง where
ฉันพยายามค้นหาผู้ใช้ทั้งหมดที่มี ID มากกว่า 200 แต่ฉันมีปัญหากับไวยากรณ์เฉพาะบางอย่าง User.where(:id > 200) และ User.where("? > 200", :id) มีทั้งล้มเหลว ข้อเสนอแนะใด ๆ


8
วิธีการเข้ารหัส URL สตริงใน Ruby
ฉันจะURI::encodeสร้างสตริงได้อย่างไร: \x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a เพื่อรับมันในรูปแบบเช่น: %124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A ตาม RFC 1738? นี่คือสิ่งที่ฉันลอง: irb(main):123:0> URI::encode "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a" ArgumentError: invalid byte sequence in UTF-8 from /usr/local/lib/ruby/1.9.1/uri/common.rb:219:in `gsub' from /usr/local/lib/ruby/1.9.1/uri/common.rb:219:in `escape' from /usr/local/lib/ruby/1.9.1/uri/common.rb:505:in `escape' from (irb):123 from /usr/local/bin/irb:12:in `<main>' นอกจากนี้: irb(main):126:0> CGI::escape "\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a" ArgumentError: invalid byte sequence in UTF-8 from /usr/local/lib/ruby/1.9.1/cgi/util.rb:7:in `gsub' from /usr/local/lib/ruby/1.9.1/cgi/util.rb:7:in `escape' from (irb):126 from …

7
การกำหนดเวอร์ชัน API สำหรับเส้นทาง Rails
ฉันกำลังลองรุ่น API ของฉันเหมือนมีลาย ด้านล่างได้รับ API เวอร์ชันล่าสุดคือ 2 /api/users ส่งคืน 301 ถึง /api/v2/users /api/v1/users ส่งคืนดัชนีผู้ใช้ 200 รายการในเวอร์ชัน 1 /api/v3/users ส่งคืน 301 ถึง /api/v2/users /api/asdf/users ส่งคืน 301 ถึง /api/v2/users ดังนั้นโดยทั่วไปสิ่งใดก็ตามที่ไม่ได้ระบุลิงก์เวอร์ชันไปเป็นเวอร์ชันล่าสุดเว้นแต่ว่ามีเวอร์ชันที่ระบุอยู่แล้วจึงเปลี่ยนเส้นทางไปยังเวอร์ชันนั้น นี่คือสิ่งที่ฉันมี: scope 'api', :format => :json do scope 'v:api_version', :api_version => /[12]/ do resources :users end match '/*path', :to => redirect { …

11
วิธีการปิดการใช้งาน "ไม่สามารถแสดงคอนโซลจาก ... " บน Rails
ฉันใช้ Ubuntu / คนพเนจรเป็นสภาพแวดล้อมการพัฒนาของฉัน ฉันได้รับข้อความเหล่านี้บนคอนโซลของราง: Started GET "/assets/home-fcec5b5a277ac7c20cc9f45a209a3bcd.js?body=1" for 10.0.2.2 at 2015-04-02 15:48:31 +0000 Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 เป็นไปได้หรือไม่ที่จะปิดการใช้งานข้อความ "ไม่สามารถแสดงผล ... " หรืออนุญาตในทางใดทางหนึ่ง?

7
เป็นของเพื่อผ่านการเชื่อมโยง
ด้วยการเชื่อมโยงดังต่อไปนี้ฉันต้องอ้างอิงสิ่งQuestionที่Choiceแนบมาผ่านจากChoiceโมเดล ฉันพยายามใช้belongs_to :question, through: :answerเพื่อดำเนินการนี้ class User has_many :questions has_many :choices end class Question belongs_to :user has_many :answers has_one :choice, :through => :answer end class Answer belongs_to :question end class Choice belongs_to :user belongs_to :answer belongs_to :question, :through => :answer validates_uniqueness_of :answer_id, :scope => [ :question_id, :user_id ] end ฉันได้รับ …

15
Bundler: ไม่พบคำสั่ง
ฉันกำลังโฮสต์บน vps, ubuntu 10.04, ราง 3, ruby ​​และ mysql ติดตั้งอย่างถูกต้องโดยทำตามบทเรียนบางอย่าง ถ้าฉันเรียกใช้bundle checkหรือbundle installฉันได้รับข้อผิดพลาด '-bash: bundle: command command not found' จากgem list --localฉันเห็นการติดตั้ง 'bundler (1.0.2, 1.0.0)' ฉันไม่รู้ว่าเกิดอะไรขึ้น ... gem environment ผลตอบแทน: RubyGems Environment: - RUBYGEMS VERSION: 1.3.7 - RUBY VERSION: 1.8.7 (2010-04-19 patchlevel 253) [i686-linux] - INSTALLATION DIRECTORY: /opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8 - RUBY …

26
ฉันจะหลีกเลี่ยงการเรียกใช้การเรียกกลับ ActiveRecord ได้อย่างไร
ฉันมีบางรุ่นที่มีการโทรกลับหลังบันทึก ปกติแล้วจะใช้ได้ แต่ในบางสถานการณ์เช่นเมื่อสร้างข้อมูลการพัฒนาฉันต้องการบันทึกโมเดลโดยไม่ต้องเรียกใช้การเรียกกลับ มีวิธีง่าย ๆ ในการทำเช่นนั้น? คล้ายกับ ... Person#save( :run_callbacks => false ) หรือ Person#save_without_callbacks ฉันดูเอกสาร Rails แล้วไม่พบอะไรเลย อย่างไรก็ตามจากประสบการณ์ของฉันเอกสาร Rails ไม่ได้บอกเรื่องราวทั้งหมดเสมอไป UPDATE ฉันพบโพสต์บล็อกที่อธิบายถึงวิธีที่คุณสามารถลบการโทรกลับออกจากโมเดลดังนี้: Foo.after_save.clear ฉันไม่พบตำแหน่งที่บันทึกไว้ แต่ดูเหมือนว่าจะใช้งานได้


7
'sudo gem install' หรือ 'gem install' และตำแหน่งของ gem
การใช้ ' sudo gem list --local' และ ' gem list --local' ให้ผลลัพธ์ที่ต่างกัน เส้นทางอัญมณีของฉันถูกตั้งไว้ที่โฟลเดอร์บ้านของฉันและมีเพียงอัญมณีจาก ' gem list --local' อาจไม่ดีที่จะติดตั้งอัญมณีในไดเรกทอรีต่าง ๆ ในคอมพิวเตอร์ของฉันดังนั้นฉันควรตั้งค่าเส้นทางอัญมณีให้แตกต่างกันหรือไม่และควรใช้sudoเมื่อติดตั้งบางสิ่งหรือไม่ my ~/.profile export PATH=/opt/local/bin:/opt/local/sbin:$PATH export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" ~ / .bash_profile ว่างเปล่า

6
การโอนย้ายเพื่อเพิ่มข้อ จำกัด เฉพาะให้กับการรวมกันของคอลัมน์
สิ่งที่ฉันต้องการคือการโยกย้ายเพื่อนำข้อ จำกัด ที่ไม่ซ้ำกันมาใช้กับการรวมกันของคอลัมน์ คือสำหรับpeopleตารางการรวมกันของfirst_name, last_NameและDobต้องไม่ซ้ำกัน

5
RVM และ rbenv ทำงานอย่างไร
ฉันสนใจว่า RVM และ rbenv ทำงานอย่างไร เห็นได้ชัดว่าพวกเขาสลับระหว่างรุ่นต่าง ๆ ของ Ruby และ gemsets แต่สิ่งนี้สำเร็จ ฉันสันนิษฐานว่าพวกเขาเพียงแค่อัปเดต symlink แต่การเจาะลึกเข้าไปในโค้ด (และฉันต้องยอมรับความรู้ของฉันเกี่ยวกับ Bash นั้นเป็นเพียงผิวเผิน) พวกเขาดูเหมือนจะทำอะไรมากกว่านี้

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