簡體   English   中英

自動生成具有相關模型的方法

[英]Auto-generated methods with related models

我有兩個模型:客戶模型和合同模型。 客戶端具有3個屬性:id,email和client_number。 合同也有3個:id,ip和client_id。 客戶has_many:合同。 合同屬於:客戶端。

有了RoR,我得到了自動生成的方法,例如:

Client.find_by_email_and_client_number'some_email',1234

但是我想要一個自動生成的方法,例如:

Client.find_by_email_and_client_number_and_ip'some_email',1234,'192.168.200.54'

不只使用客戶屬性。 我也想使用Contract模型的ip屬性。

使用Rails的內置魔術查找器方法將無法實現這一目標。 但是您可以使用更直接的查詢來做到這一點,如下所示:

Client.includes(:contracts).where(:email => 'some_email', :ip => '192.168.200.54').where('contracts.client_number = 1234')

這是Rails的兩種查找機制的示例:第一種是直接通過哈希查找,第二種是SQL代碼段。

但是,您似乎實際上在這里尋找的是某種關系。 如果將client_number設置為has_many關聯的鍵,則像這樣查詢起來可能會更容易:

client = Client.find_by_client_number(1234)
client.contracts.where(:email => 'some_email', :ip => '192.168.200.54')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM