0
# committee.rb
has_and_belongs_to_many :chambers
# chamber.rb
has_and_belongs_to_many :committees
我試圖執行以下查找(在rake任務,如果該事項):
lookup = Committee.joins(:chambers)
.where(chambers: { id: chamber.id })
.where(name: clean_name)
.first
時遇到的問題與clean_name
末。當我手動放置name: "Judiciary"
時,查找會按預期成功。但是,當「司法」被傳入clean_name
時,查找返回nil
。我也試過name: "#{clean_name}"
,但無濟於事。
這裏是clean_name
如何被生成:
# scheduler.rake
# "committee" is previously-defined via an API lookup
clean_name = Committee.gsub_name(committee)
# committee.rb
# I have to sanitize the API-returned name in order to make
it consistent with my own naming convention
def self.gsub_name(name)
return name.gsub("Committee on the ", "").gsub("Committee on ", "").gsub("'", "'").gsub("House ", "").gsub("Senate ", "").gsub("Committee", "")
end
我已經證實,在執行查找之前相應的文本gsub_name
的回報。
這裏是全功能scheduler.rake
:
def add_committee_for(bill, chamber)
params = [
:level => "#{chamber.government.level}",
:endpoint => "bill_committee",
:api_url => bill.api_url
]
# Retrieve original unsuanitized value from API:
committee = Bill.set_request(params)
clean_name = Committee.gsub_name(committee)
chamber_committees = chamber.committees
yn_committee = Committee
.joins(:chambers)
.where(chambers: { id: chamber.id })
.where(name: "#{clean_name.to_s}")
.first
end
您確定字符串中沒有前導或尾隨空格嗎?你可以調用'clean_name.strip'來檢查,它會消除空白。 – Iceman
@Iceman我以爲我用我的gsubs解決了這個問題,但是......你釘了它。我會盡快接受您的答案。非常感謝! –