嘿,我一直在試圖升級軌道應用程序從軌道3到軌道4,我遇到麻煩的事情之一是正在研究有條件的has_one
關聯的寶石將會在兩個版本中進行語法處理。請看下圖:Rails 3&4條件關聯語法
Rails 3的語法:
has_one :foo,
class_name: 'Gem::Foo', foreign_key: :foo_key, primary_key: :bar_key
conditions: proc { proc_logic }
軌道4語法:
has_one :foo,
-> { where(proc_logic in where clause) },
class_name: 'Gem::Foo', foreign_key: :foo_key, primary_key: :bar_key
看來,在一個Rails協會執行conditions
的兩種方式是互斥的(不建議使用Rails中4,在Rails 3中不兼容)。有沒有辦法達成妥協,以便代碼可以在兩個rails版本上運行?
Rails 4也使用' - > {}'作爲範圍。例如,用'User'類,你可以創建一個範圍'女性',導致通話'User.female.all ...' – onebree