2013-04-15 28 views

回答

1

看看Ohm。它是由Padrino支持的ORM,與Active Model類似,但使用Redis作爲數據存儲。

如果您想在歐姆中使用'Padrino Admin',您可能需要build Padrino from master or wait for 0.11.2

padrino g project my_app --orm ohm 
cd my_app 
bundle 
padrino g model Post title:string body:text 
padrino g admin 
padrino g admin_page post 
padrino rake db:seed 
padrino start 

編輯:這是一種向Padmino管理頁添加一個集合作爲ORM的方法。

打開您生成的admin/views/presentations/index.erb並在表格中顯示您的收藏。

<td class=list-column> 
    <% presentation.slides.each do |slide| %> 
    <div><%= slide.name %></div> 
    <% end %> 
</td> 

打開admin/views/presentations/_form.erb並添加check_box_group爲您的收藏。

<fieldset class='control-group <%= error ? 'has-error' : ''%>'> 
    <%= f.label :slides, :class => 'control-label' %> 
    <div class='controls'> 
    <%= f.check_box_group(:slide_ids, collection: @slides, selected: @presentation.slides, fields: [:name, :id]) %> 
    </div> 
</fieldset> 

從那裏,你可以更新您的演示控制器來處理params[:presentation][:slide_ids]或添加下面的方法來將您的模型。

def slide_ids=(ids) 
    if valid? && save 
    slides.key.del if slides.key.exists? 
    slides.key.sadd(ids) 
    end 
end 

這將用新設置替換當前的一組幻燈片。

+0

datamapper會比Ohm更好地支持redis嗎?我無法想出一種方法來創建一對多或多對多的關係,並將其應用於管理視圖中?任何線索如何做到這一點? – zotherstupidguy

+1

目前'Ohm :: Model.attributes'只返回屬性而不返回關聯。 [Padrino Admin Generator如何處理Ohm和DataMapper的列](https://github.com/padrino/padrino-framework/blob/master/padrino-admin/lib/padrino-admin/generators/orm.rb #L58)。可以在'Ohm :: Model.attributes'中注入'Ohm :: Model.collections'並處理[管理頁面模板]中的特殊情況(https://github.com/padrino/padrino-framework/ BLOB /主/ padrino管理員/ lib目錄/ padrino管理員/發電機/模板/ HAML /頁/ index.haml.tt#L44)。 – lastcanal

+0

我實際上並不認爲DM將關聯應用於管理視圖。從幾年前看看這個[un-merged pull request](https://github.com/devrandom/padrino-framework/commit/78478d9a373eb16c08373158af22ab80387fe496)。 – lastcanal