Rails rails 如何设计 model 名称?

linjunhalida · 2012年06月09日 · 最后由 fsword 回复于 2012年06月10日 · 3999 次阅读

Hello,我思考一个 model 命名规则的问题。

比如,我有一个 model: Book, 我还要记录用户对 book 的 review,那么我建立一个 model: BookReview,

我设置 url 是属于 book 的,那么 url 就是: /books/12/book_reviews/121

这样的 url 很丑啊。

大家觉得这种情况应该如何命名比较好呢?

还是选择: /book_reviews/121 ?

还是修改到: /books/12/reviews/121?

当然取名为 Review 了

如果我又有一个 MovieReview? 但是里面栏位区别很大必须得分开表呢?

@linjunhalida 我觉得都叫 review 也没有问题,因为 rails 的 model relation 支持 polymorphic。

或者可以根据你的名字叫 BookReview,MovieREview. 然后通过 route 的:as 来修改 url 名字

我觉得吧,这东西不需要纠结,你如果想说“这个评论”就用第一种。 如果想说“这本书的这个评论”就用第二种。 前面是简洁,后面是清晰。 两种都可以,看个人习惯,如果是团队协作的话统一风格就 OK。

当然,你要说“这个人的这个这本书的这个评论”就有点罗嗦了。

如果可以用多态的话没有问题。不过这个 Review 是只限定属于某个 book 的部分。。。 不过看起来去掉 Book 的前缀是正确的方式。在 route 里面已经以嵌套的方式标示出来了从属关系,虽然从名称从看不出来。

model 用 BookReview 挺好的。 url 可以用/book_review/123, 内嵌 resource 没什么必要,用户不会看这个

我目前比较喜欢 Book, Book::Comment /books/:id, /book/comments/:id

resources :books do 
  resources :book_reviews, :path => 'reviews'
end

这样如何

没有第二种的情况下一切从简,有了再说,有了的时候再把新的加上前缀。 如果一开始得就有两种,那就用多态。 当然尽可能的做成多态

另外 URL 也尽可能的从简

#8 楼 @Rei 我目前用的是简单的做法,但是现在觉得用模块分开比较好

需要 登录 后方可回复, 如果你还没有账号请 注册新账号