คำถามติดแท็ก activerecord

Active Record เป็นรูปแบบที่รวมลอจิกโดเมนกับสตอเรจที่เป็นนามธรรมในออบเจ็กต์เดียว ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรูปแบบ [rail-activerecord] สำหรับคำถามเกี่ยวกับเฟรมเวิร์ก Rails ORM

5
คุณจะได้รับชื่อผู้ใช้ DB ชื่อฐานข้อมูลใน Rails หรือไม่
ฉันกำลังเขียนภารกิจเรคที่ฐานข้อมูลบางตัวทำงานนอก Rails / ActiveRecord มีวิธีรับข้อมูลการเชื่อมต่อฐานข้อมูล (โฮสต์ชื่อผู้ใช้รหัสผ่านชื่อฐานข้อมูล) สำหรับสภาพแวดล้อมปัจจุบันตามที่กำหนดไว้database.ymlหรือไม่? ฉันอยากได้มันเพื่อที่ฉันจะได้ใช้มันเชื่อมต่อแบบนี้ ... con = Mysql.real_connect("host", "user", "pw", "current_db")

8
inverse_of ทำอะไร มันสร้าง SQL อะไร?
ฉันพยายามเอาหัวไปรอบ ๆinverse_ofและไม่เข้าใจ sql ที่สร้างขึ้นมีลักษณะอย่างไรถ้ามี? ที่ไม่inverse_ofตัวเลือกที่มีลักษณะการทำงานเหมือนกันถ้าใช้กับ:has_many, :belongs_toและ:has_many_and_belongs_to? ขออภัยถ้านี่เป็นคำถามพื้นฐาน ฉันเห็นตัวอย่างนี้: class Player < ActiveRecord::Base has_many :cards, :inverse_of => :player end class Card < ActiveRecord::Base belongs_to :player, :inverse_of => :cards end

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

4
คุณจะรันคำสั่ง SQL ด้วยตนเองใน Ruby On Rails โดยใช้ NuoDB อย่างไร
ฉันพยายามรันคำสั่ง SQL ด้วยตนเองเพื่อให้ฉันสามารถเข้าถึงโพรซีเดอร์ใน NuoDB ฉันใช้ Ruby on Rails และฉันใช้คำสั่งต่อไปนี้: ActiveRecord::Base.connection.execute("SQL query") "แบบสอบถาม SQL" อาจเป็นคำสั่ง SQL ใด ๆ ตัวอย่างเช่นฉันมีตารางชื่อ "คำติชม" และเมื่อฉันรันคำสั่ง: ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`") สิ่งนี้จะส่งกลับการตอบสนอง "จริง" แทนที่จะส่งข้อมูลทั้งหมดที่ขอมาให้ฉัน นี่คือผลลัพธ์บน Rails Console คือ: SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true ฉันต้องการใช้วิธีนี้เพื่อเรียกโพรซีเดอร์ที่เก็บไว้ใน NuoDB แต่เมื่อเรียกโพรซีเดอร์นี้จะส่งคืนการตอบกลับที่ "จริง" มีอยู่แล้วฉันสามารถดำเนินการคำสั่ง SQL และรับข้อมูลที่ร้องขอแทนที่จะได้รับการตอบสนอง "จริง"?

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 ฉันได้รับ …

6
นับ, ขนาด, ความยาว…มีตัวเลือกมากเกินไปในรูบี?
ฉันไม่สามารถหาคำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้และฉันต้องการให้แน่ใจว่าฉันเข้าใจในระดับ "n'th" :-) a = {"a" => "Hello", "b" => "โลก"} a.count # 2 a.size # 2 a.length # 2 a = [10, 20] a.count # 2 a.size # 2 a.length # 2 ดังนั้นที่จะใช้? ถ้าฉันต้องการทราบว่ามีองค์ประกอบมากกว่าหนึ่งองค์ประกอบมันไม่สำคัญ แต่ฉันต้องการให้แน่ใจว่าฉันเข้าใจความแตกต่างที่แท้จริง สิ่งนี้ใช้กับอาร์เรย์ด้วย ฉันได้รับผลลัพธ์เดียวกัน นอกจากนี้ฉันรู้ว่าการนับ / ขนาด / ความยาวมีความหมายต่างกันด้วย ActiveRecord ฉันสนใจทับทิมบริสุทธิ์ (1.92) ส่วนใหญ่ในตอนนี้ แต่ถ้าใครอยากพูดถึงความแตกต่างของ AR ก็น่าจะเป็นที่ชื่นชมเช่นกัน …

19
วิธีเชื่อมโยงการสืบค้นขอบเขตด้วยหรือแทนที่จะเป็น AND
ฉันใช้ Rails3, ActiveRecord แค่สงสัยว่าฉันจะเชื่อมโยงขอบเขตด้วยคำสั่ง OR แทนที่จะเป็น AND ได้อย่างไร เช่น Person.where(:name => "John").where(:lastname => "Smith") โดยปกติจะส่งคืน: name = 'John' AND lastname = 'Smith' แต่ฉันต้องการ: `name = 'John' OR lastname = 'Smith'

6
วิธีการเลือกตำแหน่ง ID ใน Array Rails ActiveRecord โดยไม่มีข้อยกเว้น
เมื่อฉันมีอาร์เรย์ของรหัสเช่น ids = [2,3,5] และฉันแสดง Comment.find(ids) ทุกอย่างทำงานได้ดี แต่เมื่อมี id ที่ไม่มีอยู่ฉันจะได้รับข้อยกเว้น สิ่งนี้เกิดขึ้นโดยทั่วไปเมื่อฉันได้รับรายการ ID ที่ตรงกับตัวกรองบางตัวและมากกว่าที่ฉันทำ current_user.comments.find(ids) คราวนี้ฉันอาจมีรหัสความคิดเห็นที่ถูกต้องซึ่งไม่ได้เป็นของผู้ใช้ที่ระบุดังนั้นจึงไม่พบและฉันได้รับข้อยกเว้น ฉันได้ลองfind(:all, ids)แล้ว แต่มันส่งคืนระเบียนทั้งหมด วิธีเดียวที่ฉันทำได้ตอนนี้คือ current_user.comments.select { |c| ids.include?(c.id) } แต่สำหรับฉันดูเหมือนวิธีแก้ปัญหาที่ไม่มีประสิทธิภาพมาก มีวิธีที่ดีกว่าในการเลือกID ใน Arrayโดยไม่ได้รับข้อยกเว้นในเรกคอร์ดที่ไม่มีอยู่หรือไม่?

3
ใช้ Rails ทำให้เป็นอนุกรมเพื่อบันทึกแฮชลงในฐานข้อมูล
ฉันพยายามบันทึกรหัสการแมปแฮชเป็นจำนวนครั้งในแอปทางรถไฟของฉัน การย้ายฐานข้อมูลของฉันเพื่อรองรับคอลัมน์ใหม่นี้: class AddMultiWrongToUser < ActiveRecord::Migration def self.up add_column :users, :multi_wrong, :string end def self.down remove_column :users, :multi_wrong end end ในรุ่นของฉันฉันมี: class User < ActiveRecord::Base serialize :multi_wrong, Hash end แต่เมื่อฉันใช้คอนโซลรางเพื่อทดสอบสิ่งนี้โดยทำ: user = User.create() user.multi_wrong = {"test"=>"123"} user.save ผลลัพธ์เป็นเท็จ เกิดอะไรขึ้นที่นี่?

3
เมื่อใดควรเพิ่มดัชนีใดในตารางใน Rails
ฉันมีคำถามเกี่ยวกับฐานข้อมูล Rails ฉันควรเพิ่ม "ดัชนี" ให้กับคีย์ต่างประเทศทั้งหมดเช่น "xxx_id" หรือไม่ ฉันควรเพิ่ม "ดัชนี" ในคอลัมน์ "id" ที่สร้างขึ้นโดยอัตโนมัติหรือไม่ ฉันควรเพิ่ม "ดัชนี (ไม่ซ้ำกัน)" ในคอลัมน์ "id" ที่สร้างขึ้นโดยอัตโนมัติหรือไม่ หากฉันเพิ่มดัชนีให้กับคีย์ต่างประเทศสองรายการพร้อมกัน ( add_index (:users, [:category, :state_id])จะเกิดอะไรขึ้นสิ่งนี้แตกต่างจากการเพิ่มดัชนีสำหรับแต่ละคีย์อย่างไร class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :name t.integer :category_id t.integer :state_id t.string :email t.boolean :activated t.timestamps end # Do I need …

14
Rails 3: รับบันทึกแบบสุ่ม
ดังนั้นฉันได้พบหลายตัวอย่างในการค้นหาเร็กคอร์ดแบบสุ่มใน Rails 2 - วิธีที่ต้องการน่าจะเป็น: Thing.find :first, :offset => rand(Thing.count) เนื่องจากเป็นมือใหม่ฉันไม่แน่ใจว่าจะสร้างสิ่งนี้ได้อย่างไรโดยใช้ไวยากรณ์การค้นหาใหม่ใน Rails 3 แล้ว "Rails 3 Way" ในการค้นหาระเบียนแบบสุ่มคืออะไร?

3
Rails: ตรวจสอบความเป็นเอกลักษณ์ของสองคอลัมน์ (ร่วมกัน)
ฉันมีReleaseแบบจำลองmediumและcountryคอลัมน์ (อื่น ๆ ) ไม่ควรมีreleasesที่ใช้ร่วมกันmedium/ countryชุดค่าผสมที่เหมือนกัน ฉันจะเขียนสิ่งนี้เป็นการตรวจสอบรางได้อย่างไร

2
ทับทิมบนราง. ฉันจะใช้วิธีการสร้างเรกคอร์ด. Active ใน a: เป็นของความสัมพันธ์ได้อย่างไร
ฉันไม่พบเอกสารใด ๆ เกี่ยวกับวิธีการสร้างใน Rails (ขณะนี้ฉันใช้ 2.0.2) ดูเหมือนว่าคุณสามารถใช้วิธีการสร้างเพื่อเพิ่มระเบียนลงในhas_manyความสัมพันธ์ก่อนที่จะบันทึกระเบียนใดก็ได้ ตัวอย่างเช่น: class Dog < ActiveRecord::Base has_many :tags belongs_to :person end class Person < ActiveRecord::Base has_many :dogs end # rails c d = Dog.new d.tags.build(:number => "123456") d.save # => true สิ่งนี้จะช่วยทั้งสุนัขและแท็กด้วยปุ่มต่างประเทศอย่างเหมาะสม สิ่งนี้ดูเหมือนจะไม่ทำงานในbelongs_toความสัมพันธ์ d = Dog.new d.person.build # => nil object on nil.build ฉันได้ลองแล้ว …

6
Rails 4 LIKE query - ActiveRecord เพิ่มเครื่องหมายคำพูด
ฉันกำลังพยายามทำแบบสอบถามแบบนี้ def self.search(search, page = 1 ) paginate :per_page => 5, :page => page, :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search], order => 'name' end แต่เมื่อมีการเรียกใช้บางสิ่งบางอย่างกำลังเพิ่มเครื่องหมายคำพูดซึ่งทำให้คำสั่ง sql ออกมาเป็นเช่นนั้น SELECT COUNT(*) FROM "schools" WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')): คุณจะเห็นปัญหาของฉัน ฉันใช้ Rails 4 และ Postgres …


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