我以为我对具有find
除 ID 以外的属性的模型有一个相当简单的解决方案,但我遇到了一个问题。
当前设置:
灰烬路由器:
App.Router.map ->
@resource "posts", ->
@route "show", {path: ':slug'}
App.PostsShowRoute = Ember.Route.extend
serialize: (model, params) ->
object = {}
name = params[0]
object[name] = model.get('slug')
return object
model: (params) -> App.Post.find(params.slug)
导轨控制器:
class PostsController < ApplicationController
def show
@post = Post.find_by_slug(params[:id])
render json: @post
end
end
问题
如果params.slug == "some-post"
,当post
对象从服务器返回时,post.id == "some-post"
。这弄乱了所有的关联。
这可能是因为DS.Store
假设如果我打电话find(something)
,something
就是id
。我原以为来自服务器的响应会覆盖这个假设,但事实并非如此。
有一个更好的方法吗?我的用例非常简单。我需要做的就是post
通过 slug 属性对对象进行序列化和反序列化。
我正在使用 Ember Data 修订版 11