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? 但是里面栏位区别很大必须得分开表呢?
#2 楼 @linjunhalida 使用 polymorphic
@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 我目前用的是简单的做法,但是现在觉得用模块分开比较好