यह यह करने के लिए सबसे अच्छा तरीका है उपयोग कर रहे हैं: Relation.where(part: ['v03', 'v04']).uniq.pluck(:car)
यहाँ एक पूर्ण उदाहरण:
require 'active_record'
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
ActiveRecord::Schema.define do
self.verbose = false
create_table :relations do |t|
t.string :part
t.string :car
end
end
Relation = Class.new ActiveRecord::Base
# build the relations (btw, this name makes no sense)
Relation.create! car: 'f01', part: 'v03'
Relation.create! car: 'f03', part: 'v03'
Relation.create! car: 'f03', part: 'v04'
Relation.create! car: 'f04', part: 'v04'
# querying
Relation.where(part: "v04").pluck(:car) # => ["f03", "f04"]
Relation.where(part: "v03").pluck(:car) # => ["f01", "f03"]
Relation.where(part: ['v03', 'v04']).uniq.pluck(:car) # => ["f01", "f03", "f04"]
कुछ विचार:
अपने चर के सामने asperands न रखें जब तक आप उन्हें उदाहरण चर होना चाहते हैं (उदाहरण के लिए @a
स्पष्ट रूप से a
होना चाहिए - और फिर भी, एक बेहतर नाम अच्छा होगा। ऊपर दिखाए गए अनुसार मैं शायद इसे पूरी तरह से छुटकारा पाता हूं)।
यह नक्शे से प्लक उपयोग करने के लिए बेहतर है क्योंकि प्लक केवल प्रासंगिक डेटा का चयन करता है: SELECT car FROM "relations" WHERE "relations"."part" = 'v04'
बनाम SELECT "relations".* FROM "relations" WHERE "relations"."part" = 'v04'
यह ActiveRecord पर .uniq
उपयोग करने के लिए बेहतर है :: संबंध है क्योंकि यह डेटाबेस में विशिष्टता ले जाता है बल्कि रूबी के साथ मेमोरी में ऐसा करने की कोशिश करने से: SELECT DISTINCT car FROM "relations" WHERE "relations"."part" IN ('v03', 'v04')
स्रोत
2012-09-01 19:58:51
क्या ऑर्डर मायने रखता है? –
क्या आप रेल का उपयोग कर रहे हैं मुझे लगता है? –