當項目使用Rails 3時,我創建了這個關聯。因爲我們已經升級到了Rails 4,現在我得到了一個有關這個的棄用警告。以下代碼是Rails 4說過時的一個示例。使用Proc.new的Rails 4在活動記錄關聯中的條件
has_one :original_participant,
:through => :original_participation,
:source => :participants,
:conditions => Proc.new {
unless self.respond_to?(:organization_id)
"original_participants_surveys_participants.organization_id = surveys_participants.organization_id"
else
"surveys_participants.organization_id = #{self.organization_id}"
end
}
代碼在條件塊內部有except條件的原因是由於sphinx。當獅身人面像正在構建它的索引時,它不會有可用的organization_id。當使用標準的Active Record調用時,它將具有organization_id。所以我需要在這個過程中做到這一點,並且沒有定義organization_id。我已經做了一些研究,至今還沒有提出任何解決方案來實現Rails 4的方式。這仍然在Rails 4中正常工作,但我仍然不斷收到棄用警告。
冗長的問題簡短如何將此轉換爲與Rails 4兼容,而不會丟失檢查organization_id是否可用的功能?
下面是實際的警告信息的軌道是給我
棄用警告:以下選項在調查:: Participant.has_one:original_participant聲明中棄用::條件。請改用示波器模塊。例如,以下內容:
has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'
應該被改寫爲以下幾點:
has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'
您可以發佈確切的警告信息? – Agis
當然可以在問題結束時發佈。 – wallerjake