在Rails我有以下結構注入/接入方式
#.../models/A.rb
module A
def m
end
end
#.../models/a/B.rb
class A::B < ActiveRecord::Base
end
此就自動爲B. 的父母有沒有辦法做這樣的事情家蠶,而無需修改B'我知道我可以做類似B.parent.m的東西,並從那裏創建別名,但那麼我將不得不改變B.
我正在尋找以某種方式將A中的代碼注入到B中,但是我不'不知道這個自動關聯是在幕後完成的。 喜歡的東西
module A
module C
def mc
end
end
def placed_as_parent (child) # supposing this is the method called to put this module as a parent
super child
child.include(C) #this is what I would like to do
end
end
其背後的問題是,我有一個已經被該文件夾的幾款車型之間共享的模塊,我想提出一些共同的東西的模型有沒有需要手動包括在我的每個模型
的/擴展模塊[EDITED]
我不是清楚我的問題。在Rails 3,如果你做
rails generate active_record:model A::B
它會生成文件
#.../models/A.rb
module A
def self.table_name_prefix
'a_'
end
end
#.../models/a/B.rb
class A::B < ActiveRecord::Base
end
所以,如果我打開控制檯,然後輸入
A::B.table_name # -> 'a_b'
A::B.table_name_prefix # -> ''
A::B.parent # -> A
A.table_name_prefix # 'a_'
這是自動沒有任何包括/延長在模型B中。我想要的是在A中包含更多內容並從B中訪問它,而不像前面所述的那樣更改B上的任何內容。
感謝您澄清。現在我們知道你想在Ruby語言中是可能的,而這只是一個解決問題的方法。我們可以閱讀ActiveRecord的源代碼。 –
當然,我知道我想要的是可能的!我想要知道怎麼做最好的方法 – Guy