मैं रेल की नौसिखिया हूं और रेल के साथ एक टेबल पर एक खोज करने की कोशिश कर रहा हूं, और मैं बस ऐसा करने के लिए अपने एसक्यूएल ज्ञान का उपयोग कर रहा हूं। लेकिन यह सिर्फ रेल या रूबी की तरह नहीं लगता है ...सशर्त जोड़ने के लिए जहां रेलों में खंड
क्या मैं नीचे क्या कर रहा हूं करने का कोई बेहतर तरीका है? (मूल रूप से, केवल तारीख तर्क पारित SQL के अगर वे भर रहे हैं)
def search(begin_date=nil, end_date=nil)
subject = " and created_at "
if !(begin_date.nil? || end_date.nil?)
where_part = subject + "BETWEEN :begin_date AND :end_date"
else if (begin_date.nil? && end_date.nil?)
where_part = ""
else if(begin_date.nil?)
where_part = subject + " <= :end_date"
else if (end_date.nil?)
where_part = subject + " >= :begin_date"
end
end
end
end
User.joins(places: {containers: {label: :user}}).where("users.id= :user_id "+where_part, user_id: self.id, begin_date:begin_date, end_date:end_date).group(...).select(...)
end
संपादित
user.rb
has_many :containers
has_many :user_places
has_many :places, through: :user_places
has_many :labels
place.rb
has_many :containers
has_many :user_places
has_many :users, through: :user_places
कंटेनर। आरबी
belongs_to :label
belongs_to :place
belongs_to :user
label.rb
belongs_to :user
has_many :containers
असल में, मैं स्थान प्रति, किसी दिए गए उपयोगकर्ता के लेबल के भीतर या एक सीधा संबंध के साथ कंटेनरों की संख्या की गिनती मिलता है, और यह फिल्टर करने के लिए सक्षम होना चाहते हैं करना चाहते हैं शुरुआत और समाप्ति तिथियों से।
इनमें से कोई भी तारीख शून्य हो सकती है, और इसलिए मुझे इसे "क्वेरी" में संबोधित करने की आवश्यकता होगी।
मेरा सवाल है: मैं रेलवे तरीके कैसे कर सकता हूं? मैंने http://guides.rubyonrails.org/active_record_querying.html पर एक नज़र डाली और शायद मैं कहीं भी छोड़कर कमांड का उपयोग कर सकता हूं ... लेकिन यह रिलेशनशिप मॉडल सिर्फ ActiveRecord के साथ ऐसा करने के लिए थोड़ा जटिल लगता है ... मैं कैसे कर सकता हूं, मुझे सच में लगता है कि मुझे ActiveRecord का उपयोग करना चाहिए, लेकिन कैसे?
धन्यवाद
[यहाँ कैसे करना है का एक अच्छा उदाहरण है सक्रिय रिकॉर्ड के साथ जुड़ जाता है] [1] [1]: http://stackoverflow.com/questions/764538/ruby-on-rails-how -to-join-two-table –
हाय, मेरी समस्या शामिल होने के साथ नहीं है ... मैंने अभी उन्हें नहीं लिखा क्योंकि वे प्रासंगिक नहीं हैं।मेरी बात सशर्त खोज पैरामीटर – MrWater
@itsalltime के साथ है - मुझे लगता है कि बॉब क्या कहने की कोशिश कर रहा है - क्यों सीधे रिकॉर्ड एसक्यूएल लिखने के बजाय सक्रिय रिकॉर्ड का उपयोग नहीं करते? http://guides.rubyonrails.org/active_record_querying.html – JasCav