2012-04-04 53 views
3

我正在尋找RoR中個人項目的一些指導。我使用Michael Hartl的在線書籍學習了RoR,現在我正在爲自己的啓蒙構建一個不同的應用程序。尋求構建電子商務欄應用程序的指導

我的網絡應用程序將類似於電子商務網站,除了銷售產品,我會從餐廳出售菜單項。我已經實現了存儲基本信息(姓名,電子郵件等)的用戶資源,但我正在尋求有關餐廳資源的指導。

餐廳'顯示'頁面應顯示餐廳名稱,餐廳的段落描述,3-5張照片,一些描述性標籤以及包含菜名和價格的完整菜單。我應該如何攻擊這個數據庫問題?我正在考慮在這裏創建三個模型,如下所示:

class Restaurant < ActiveRecord::Base 
has_many :dishes, :through => :menus 
end 

class Menu < ActiveRecord::Base 
belongs_to :restaurant 
end 

class Dish < ActiveRecord::Base 
belongs_to :menu 
has_one :restaurant, :through :menus 
end 

這是正確的方法嗎?

我對這個兩個問題:

1)在數據庫中的字符串屬性被限制爲255個字符,幾乎沒有足夠存儲一部餐廳描述。我如何在這裏繼續?我想讓描述由管理員用戶編輯。

2)如何處理圖片?我做了一些搜索,有些人建議使用CarrierWave進行附件上傳。有沒有人有任何其他建議或替代方案?這些照片應該易於由管理員用戶更改,並且他們應該屬於餐館。

感謝您的幫助。

+1

你的關聯看起來不錯。菜餚可以聚集在數據庫中,菜單行可以將菜餚組織成每餐廳可用的集合。對於管理上傳,如果你計劃使用Heroku,請看看這個插件:https://devcenter.heroku.com/articles/progstr-filer – danneu 2012-04-04 01:20:46

+0

謝謝你的迴應,是的,我打算部署到Heroku,所以這應該派上用場。 – 2012-04-04 02:14:47

+0

@danneu我編輯帖子以反映其他模型。這聽起來對嗎? – 2012-04-04 14:38:22

回答

2

是的,這是一個很好的做法。

爲了存儲更多的文本數據庫表字段,使用 「文本」 是這樣的:

create_table :products do |t| 
    t.string :name 
    t.text :description 
end 

是,選擇CarrierWave。一些備選方案:

  • 回形針(相當好)
  • 滾動你自己的(壞主意,除非你喜歡學習)
  • 不同的JavaScript/jQuery的/ AJAX上傳助手(真的光滑但更復雜)
+0

感謝您的詳細回覆。還有一個問題:你將如何處理標籤?創建一個關聯,例如:has_many:tags/has_many:餐館?我希望能夠通過標記(中文,開放遲等等)對餐館進行排序/查看。 – 2012-04-04 02:25:53

+2

對於標記,請使用acts-as-taggable-on https://github.com/mbleigh/acts-as-taggable-上 – joelparkerhenderson 2012-04-04 03:00:42

相關問題